- Windows CE Programming - http://www.hjgode.de/wp -

Windows Mobile: Install FTDI_SER serial to USB adapter

Sometime you may need additional serial connectors for your windows mobile device. Here is the odyssey I had with a FTDI adapter:

How I installed a FTDI serial to USB adapter within ITC CN50 running Windows Mobile 6.1.

Although the USB to Serial adapters with FTDI chips can be installed with drivers from FTDI [1], these will not work out of the box with WM6.1.

Initial Test with CN50

First I copied the Armv4 driver files ftdi_ser.dll and FTDIPORT.INF to \Windows on the device.

Inserted a Micro USB/B to USB A host connector (Digikey H11576-ND [2])

micro-usb-adapter

Inserted the USB2SER adapter “US232R-10 – Premium USB – RS232 Serial Converter Cable [3]

US232R-10

The device prompts for the driver name and I typed “ftdi_ser.dll” although it should not do so, as I copied the files previously. See also

Then I started to try to communicate using COM10 (verified with registry). But there was no communication possible. The VCP test application did not list any port to open, so I entered COM10: (or SER0 for patched driver) but without success.

I also tested without success using a Loopback adapter as described here http://www.airborn.com.au/serial/rs232.html [4]:

loopback-rs232

Using the VCP PC drivers for WinXP the serial adapter worked fine, so the hardwware is not faulty.

I also tested on CN3 (WM6.1) at the dock connector without the micro-USB cable. But this did also not work.

Finally I tested on a WinCE5 device (CK61) and this worked OK. So I compared the registry of WinCE5 and WM6.1 after driver install and adapter connection. I found the following (red) keys are missing on the WM6.1 device and so I added them manually:

REGEDIT4

;[HKEY_LOCAL_MACHINE\Drivers\Active\48]
;"FullName"="SER0"
;"Hnd"=dword:005A1A80
;"Key"="Drivers\\USB\\ClientDrivers\\FTDI_DEVICE"
;"Name"="SER0:"

[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\FTDI_DEVICE\FTE06D03]
"ConfigData"=hex(3):01,04,3f,3f,10,27,88,13,c4,09,e2,04,71,02,38,41,9c,80,4e,c0,34,00,1a,00,0d,00,06,40,03,80,00,00,d0,80
"DeviceContext"=dword:00000000
"InitialIndex"=dword:00000000
"LatencyTimer"=dword:00000010

[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\FTDI_DEVICE]
"ConfigData"=hex(3):01,04,3f,3f,10,27,88,13,c4,09,e2,04,71,02,38,41,9c,80,4e,c0,34,00,1a,00,0d,00,06,40,03,80,00,00,d0,80
"DeviceArrayIndex"=dword:00000000
"Dll"="ftdi_ser.dll"
"Index"=dword:00000000
"InitialIndex"=dword:00000000
"LatencyTimer"=dword:00000010
"Prefix"="SER"
"Version"="1.1.0.2"

[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\1027_24577\Default\Default\FTDI_DEVICE]
"DLL"="ftdi_ser.dll"

[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\1027_24592\Default\Default\FTDI_DEVICE]
"DLL"="ftdi_ser.dll"

[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\1027_24593\Default\Default\FTDI_DEVICE]
"DLL"="ftdi_ser.dll"

[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\Default\255\FTDI_DEVICE]
"DLL"="ftdi_ser.dll"

Using this registry changes and after reinserting the adapter, I was able to communicate using the patched driver, where all COM was replaced with SER. Maybe the original driver will work too, it uses COM10 as port, where the patched driver uses SER0.

VCP test tool

Although the VCP Test application is not the best in regards of error checking (you can enter whatever you want for port and it always makes you think it was able to open the port), I include it here only for completeness.

Original VCP test tool: http://www.ftdichip.com/Projects/CodeExamples/VC++/VCPTest_vcpp.zip [5]

Patched Driver: [Download not found]

Same driver as cab with COM instead of SER: [Download not found]

Here is the source code of the modded VCP test tool: [Download not found]

Additional links

Link to Installation guides [6]: http://www.ftdichip.com/Documents/InstallGuides.htm [6]

The CE installation guide [7]: http://www.ftdichip.com/Documents/InstallGuides/Windows_CE_Installation_Guide.pdf [7]

Update 23. march 2011: Anyone looking for a two port solution? Try the drivers provided by Handera [8] (SD50).