R
RageCompex
Guest
Hi,
I hope I am in the right form here to ask the following question. Also sorry for being a noob to hardware development.
We have an Ultrasound echo device, that is using, as far as I can tell, the following driver:
Drivers for EZ-USB® FX1™ , FX2LP™ , and FX3™ - ... | Cypress Developer Community
It looks like the source code for development is this one: https://www.cypress.com/documentati...iteusb-34-usb-development-tools-visual-studio
Now I am in the debate of developing a new UWP app and a UWP device app for this device. But it would of course be highly beneficial if the device, driver and the app can be used across all Windows devices. Although Windows phone died, there are still a good amount of Windows tablets out there that seem to be architecturally different from 'normal' laptops/computers (all though I am not 100% sure about this). But in addition, we also see opportunities for using Windows IoT Core, to use certain small devices with our device.
What I am trying to figure out is, is it possible to build the driver in such a way that it can be used as a Windows Universal Driver. And then I am not 100% sure if that is solely depended on the driver, what other factors come into play when a device needs to be used across multiple windows 10 architectures?
With the current driver, we did do HLK tests for windows 10 and we also submitted the driver to the MS Hardware Dev Center, so I do have a bit of experience with the driver and generating catalog files and such. I do remember I had trouble with getting positive test results when I used [Device.NTARM], it was already a while ago that I did this, so I can't really find the errors related to that.
Eventually, this is the .inf file that is now used.
; Installation INF for the Cypress Generic USB Driver for %OPERATING_SYSTEM%
; Processor support for %PLATFORM% platforms.
;
; (c) Copyright 2017 Cypress Semiconductor Corporation
;
[Version]
Signature="$WINDOWS NT$"
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
provider=%CYUSB3_Provider%
CatalogFile=CYUSB3.cat
DriverVer=06/01/2016,1.2.3.18
[SourceDisksNames]
1=%CYUSB3_Install%,,,
[SourceDisksFiles]
CYUSB3.sys = 1
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
[DestinationDirs]
CYUSB3.Files.Ext = 10,System32\Drivers
CoInstaller_CopyFiles = 11
[ControlFlags]
ExcludeFromSelect = *
[Manufacturer]
%CYUSB3_Provider%=Device,NT,NTx86,NTamd64
;for all platforms
[Device.NT]
%VID_0559&PID_1017.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1017
%VID_0559&PID_1016.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1016
%VID_0559&PID_1015.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1015
%VID_0559&PID_1012.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1012
%VID_0559&PID_1013.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1013
%VID_0559&PID_1011.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1011
%VID_0549&PID_1007.DeviceDesc%=CyUsb3, USB\VID_0549&PID_1007
;for x86 platforms
[Device.NTx86]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb3, USB\VID_XXXX&PID_XXXX
%VID_0559&PID_1017.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1017
%VID_0559&PID_1016.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1016
%VID_0559&PID_1015.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1015
%VID_0559&PID_1012.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1012
%VID_0559&PID_1013.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1013
%VID_0559&PID_1011.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1011
%VID_0549&PID_1007.DeviceDesc%=CyUsb3, USB\VID_0549&PID_1007
;for x64 platforms
[Device.NTamd64]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb3, USB\VID_XXXX&PID_XXXX
%VID_0559&PID_1017.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1017
%VID_0559&PID_1016.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1016
%VID_0559&PID_1015.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1015
%VID_0559&PID_1012.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1012
%VID_0559&PID_1013.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1013
%VID_0559&PID_1011.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1011
%VID_0549&PID_1007.DeviceDesc%=CyUsb3, USB\VID_0549&PID_1007
[CYUSB3.NT]
CopyFiles=CYUSB3.Files.Ext
AddReg=CyUsb3.AddReg
[CYUSB3.NT.HW]
AddReg=CYUSB3.AddReg.Guid
[CYUSB3.NT.Services]
Addservice = CYUSB3,2,CYUSB3.AddService
[CYUSB3.NTx86]
CopyFiles=CYUSB3.Files.Ext
AddReg=CyUsb3.AddReg
[CYUSB3.NTx86.HW]
AddReg=CYUSB3.AddReg.Guid
[CYUSB3.NTx86.Services]
Addservice = CYUSB3,2,CYUSB3.AddService
[CYUSB3.NTamd64]
CopyFiles=CYUSB3.Files.Ext
AddReg=CyUsb3.AddReg
[CYUSB3.NTamd64.HW]
AddReg=CYUSB3.AddReg.Guid
[CYUSB3.NTamd64.Services]
Addservice = CYUSB3,2,CYUSB3.AddService
[CYUSB3.AddReg]
; Deprecating - do not use in new apps to identify a CYUSB3 driver
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,CYUSB3.sys
; You may optionally include a check for DriverBase in your application to check for a CYUSB3 driver
HKR,,DriverBase,,CYUSB3.sys
HKR,"Parameters","MaximumTransferSize",0x10001,4096
HKR,"Parameters","DebugLevel",0x10001,2
HKR,,FriendlyName,,%CYUSB3_Description%
[CYUSB3.AddService]
DisplayName = %CYUSB3_Description%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\System32\Drivers\CYUSB3.sys
AddReg = CYUSB3.AddReg
LoadOrderGroup = Base
[CYUSB3.Files.Ext]
CYUSB3.sys
[CYUSB3.AddReg.Guid]
HKR,,DriverGUID,,%CYUSB3.GUID%
;HKR,,DriverPowerPolicySetup,,%ENABLE_DRIVER_POWER_POLICY%
;-------------- WDF Coinstaller installation
[CYUSB3.NTamd64.CoInstallers]
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles
[CYUSB3.NTx86.CoInstallers]
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles
[CoInstaller_CopyFiles]
WdfCoInstaller01011.dll
[CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
[CYUSB3.NTamd64.Wdf]
KmdfService = CYUSB3, CYUSB3_wdfsect
[CYUSB3.NTx86.Wdf]
KmdfService = CYUSB3, CYUSB3_wdfsect
[CYUSB3_wdfsect]
KmdfLibraryVersion = 1.11
[Strings]
CYUSB3_Provider = "Cypress"
CYUSB3_Company = "Cypress Semiconductor Corporation"
CYUSB3_Description = "Cypress Generic USB3.0 Driver"
CYUSB3_DisplayName = "Cypress USB3.0 Generic"
CYUSB3_Install = "Cypress CYUSB3.0 Driver Installation Disk"
VID_0559&PID_1017.DeviceDesc="DIGITALIZED ULTRADONIC B SCANNER V4.0"
VID_0559&PID_1016.DeviceDesc="DIGITALIZED ULTRADONIC BONESTRONG V4.0"
VID_0559&PID_1015.DeviceDesc="MECHANIAL ULTRADONIC BSCANNER V4.0"
VID_0559&PID_1012.DeviceDesc="DIGITAL ULTRADONIC V4.0"
VID_0559&PID_1013.DeviceDesc="DIGITAL HEART SOUND V4.0"
VID_0559&PID_1011.DeviceDesc="DIGITALIZED MINI B SCANNER V4.0"
VID_0549&PID_1007.DeviceDesc="Digitalized Ultrasound B Scanner"
CYUSB3.GUID="{AE18AA60-7F6A-11d4-97DD-00010229B959}"
;ENABLE_DRIVER_POWER_POLICY="1"
CYUSB3_Unused = "."
So, my question is:
Would I be able to build a Universal Driver from this?
What steps do I have to take for that (e.g. do I have to develop a 'new' driver or simply make some adjustments to this .inf driver)?
Other thoughts? Warnings?
Thanks for the help! Really appreciated!
Continue reading...
I hope I am in the right form here to ask the following question. Also sorry for being a noob to hardware development.
We have an Ultrasound echo device, that is using, as far as I can tell, the following driver:
Drivers for EZ-USB® FX1™ , FX2LP™ , and FX3™ - ... | Cypress Developer Community
It looks like the source code for development is this one: https://www.cypress.com/documentati...iteusb-34-usb-development-tools-visual-studio
Now I am in the debate of developing a new UWP app and a UWP device app for this device. But it would of course be highly beneficial if the device, driver and the app can be used across all Windows devices. Although Windows phone died, there are still a good amount of Windows tablets out there that seem to be architecturally different from 'normal' laptops/computers (all though I am not 100% sure about this). But in addition, we also see opportunities for using Windows IoT Core, to use certain small devices with our device.
What I am trying to figure out is, is it possible to build the driver in such a way that it can be used as a Windows Universal Driver. And then I am not 100% sure if that is solely depended on the driver, what other factors come into play when a device needs to be used across multiple windows 10 architectures?
With the current driver, we did do HLK tests for windows 10 and we also submitted the driver to the MS Hardware Dev Center, so I do have a bit of experience with the driver and generating catalog files and such. I do remember I had trouble with getting positive test results when I used [Device.NTARM], it was already a while ago that I did this, so I can't really find the errors related to that.
Eventually, this is the .inf file that is now used.
; Installation INF for the Cypress Generic USB Driver for %OPERATING_SYSTEM%
; Processor support for %PLATFORM% platforms.
;
; (c) Copyright 2017 Cypress Semiconductor Corporation
;
[Version]
Signature="$WINDOWS NT$"
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
provider=%CYUSB3_Provider%
CatalogFile=CYUSB3.cat
DriverVer=06/01/2016,1.2.3.18
[SourceDisksNames]
1=%CYUSB3_Install%,,,
[SourceDisksFiles]
CYUSB3.sys = 1
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
[DestinationDirs]
CYUSB3.Files.Ext = 10,System32\Drivers
CoInstaller_CopyFiles = 11
[ControlFlags]
ExcludeFromSelect = *
[Manufacturer]
%CYUSB3_Provider%=Device,NT,NTx86,NTamd64
;for all platforms
[Device.NT]
%VID_0559&PID_1017.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1017
%VID_0559&PID_1016.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1016
%VID_0559&PID_1015.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1015
%VID_0559&PID_1012.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1012
%VID_0559&PID_1013.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1013
%VID_0559&PID_1011.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1011
%VID_0549&PID_1007.DeviceDesc%=CyUsb3, USB\VID_0549&PID_1007
;for x86 platforms
[Device.NTx86]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb3, USB\VID_XXXX&PID_XXXX
%VID_0559&PID_1017.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1017
%VID_0559&PID_1016.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1016
%VID_0559&PID_1015.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1015
%VID_0559&PID_1012.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1012
%VID_0559&PID_1013.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1013
%VID_0559&PID_1011.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1011
%VID_0549&PID_1007.DeviceDesc%=CyUsb3, USB\VID_0549&PID_1007
;for x64 platforms
[Device.NTamd64]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb3, USB\VID_XXXX&PID_XXXX
%VID_0559&PID_1017.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1017
%VID_0559&PID_1016.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1016
%VID_0559&PID_1015.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1015
%VID_0559&PID_1012.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1012
%VID_0559&PID_1013.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1013
%VID_0559&PID_1011.DeviceDesc%=CyUsb3, USB\VID_0559&PID_1011
%VID_0549&PID_1007.DeviceDesc%=CyUsb3, USB\VID_0549&PID_1007
[CYUSB3.NT]
CopyFiles=CYUSB3.Files.Ext
AddReg=CyUsb3.AddReg
[CYUSB3.NT.HW]
AddReg=CYUSB3.AddReg.Guid
[CYUSB3.NT.Services]
Addservice = CYUSB3,2,CYUSB3.AddService
[CYUSB3.NTx86]
CopyFiles=CYUSB3.Files.Ext
AddReg=CyUsb3.AddReg
[CYUSB3.NTx86.HW]
AddReg=CYUSB3.AddReg.Guid
[CYUSB3.NTx86.Services]
Addservice = CYUSB3,2,CYUSB3.AddService
[CYUSB3.NTamd64]
CopyFiles=CYUSB3.Files.Ext
AddReg=CyUsb3.AddReg
[CYUSB3.NTamd64.HW]
AddReg=CYUSB3.AddReg.Guid
[CYUSB3.NTamd64.Services]
Addservice = CYUSB3,2,CYUSB3.AddService
[CYUSB3.AddReg]
; Deprecating - do not use in new apps to identify a CYUSB3 driver
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,CYUSB3.sys
; You may optionally include a check for DriverBase in your application to check for a CYUSB3 driver
HKR,,DriverBase,,CYUSB3.sys
HKR,"Parameters","MaximumTransferSize",0x10001,4096
HKR,"Parameters","DebugLevel",0x10001,2
HKR,,FriendlyName,,%CYUSB3_Description%
[CYUSB3.AddService]
DisplayName = %CYUSB3_Description%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\System32\Drivers\CYUSB3.sys
AddReg = CYUSB3.AddReg
LoadOrderGroup = Base
[CYUSB3.Files.Ext]
CYUSB3.sys
[CYUSB3.AddReg.Guid]
HKR,,DriverGUID,,%CYUSB3.GUID%
;HKR,,DriverPowerPolicySetup,,%ENABLE_DRIVER_POWER_POLICY%
;-------------- WDF Coinstaller installation
[CYUSB3.NTamd64.CoInstallers]
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles
[CYUSB3.NTx86.CoInstallers]
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles
[CoInstaller_CopyFiles]
WdfCoInstaller01011.dll
[CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
[CYUSB3.NTamd64.Wdf]
KmdfService = CYUSB3, CYUSB3_wdfsect
[CYUSB3.NTx86.Wdf]
KmdfService = CYUSB3, CYUSB3_wdfsect
[CYUSB3_wdfsect]
KmdfLibraryVersion = 1.11
[Strings]
CYUSB3_Provider = "Cypress"
CYUSB3_Company = "Cypress Semiconductor Corporation"
CYUSB3_Description = "Cypress Generic USB3.0 Driver"
CYUSB3_DisplayName = "Cypress USB3.0 Generic"
CYUSB3_Install = "Cypress CYUSB3.0 Driver Installation Disk"
VID_0559&PID_1017.DeviceDesc="DIGITALIZED ULTRADONIC B SCANNER V4.0"
VID_0559&PID_1016.DeviceDesc="DIGITALIZED ULTRADONIC BONESTRONG V4.0"
VID_0559&PID_1015.DeviceDesc="MECHANIAL ULTRADONIC BSCANNER V4.0"
VID_0559&PID_1012.DeviceDesc="DIGITAL ULTRADONIC V4.0"
VID_0559&PID_1013.DeviceDesc="DIGITAL HEART SOUND V4.0"
VID_0559&PID_1011.DeviceDesc="DIGITALIZED MINI B SCANNER V4.0"
VID_0549&PID_1007.DeviceDesc="Digitalized Ultrasound B Scanner"
CYUSB3.GUID="{AE18AA60-7F6A-11d4-97DD-00010229B959}"
;ENABLE_DRIVER_POWER_POLICY="1"
CYUSB3_Unused = "."
So, my question is:
Would I be able to build a Universal Driver from this?
What steps do I have to take for that (e.g. do I have to develop a 'new' driver or simply make some adjustments to this .inf driver)?
Other thoughts? Warnings?
Thanks for the help! Really appreciated!
Continue reading...