Cdc Serial Driver for Windows 7 32 bit, Windows 7 64 bit, Windows 10, 8, XP. Uploaded on 4/11/2019, downloaded 5451 times, receiving a 93/100 rating by 3221 users. The CDC driver itself is built into Windows. The INF file just tells Windows to use it. In the Windows Device Manager, find the 'Unknown Device', right click it and select 'Update driver', and point it at this INF file.
I finally got around to buying one of the new programming cables that was released last year. The good news is that it does implement the USB communications class correctly (unlike the cortex), the not so good news (which I suppose we already knew from the windows driver ini file) is that it still uses the microchip vendor id and the product id that was part of a micochip example program for their. The new cable works well under OSX without needing any drivers but I thought I would have another quick look to see if the cortex could also be made to simulate a serial port.So what’s the difference between the two USB implementations?Here is an extract from a microchip app not that describes how a communications device implementing the ACM (abstract control model) should be setup.The CDC specification describes an abstract control model for serial emulation over USB in Section 3.6.2.1. In summary, two USB interfaces are required.
The first one is the Communication Class interface, using one IN interrupt endpoint. This interface is used for notifying the USB host of the current RS-232 connection status from the USB RS-232 emulated device. The second one is the Data Class interface, using one OUT bulk endpoint and one IN bulk endpoint. This interface is used for transferring raw data bytes that would normally be transferred over the real RS-232 interface.I highlighted one part which is key to understanding why the USB programming cable works under OSX and the cortex does not. Using an OSX developer utility called USBProber we can have a look at the USB device descriptors.Here is the output when using the programming cable.and the cortexNotice that the programming cable implements the two interfaces required by the spec whereas the cortex does not.Windows is less picky about this than OSX which is why everything works correctly there. OSX starts two separate drivers, one for the control interface and one for the data interface, this doesn’t work with the cortex as two drivers cannot open the same interface. I have written some application code in the past that does talk to the cortex over USB, the actual data exchange is still sort of CDC compliant, the same messages are sent so there is hope for a simple driver.Other CDC devices also have this problem, one in particular is a USB to serial converter from Texas Instruments that is used on several eval boards they sell.
There is a modified CDC driver for OSX that combines both control and data drivers into one for these boards, it may be possible to adapt this to work with the cortex and avoid writing the whole driver from scratch, the question is does anyone actually care? Do we need a driver for direct programming of the cortex with a USB A-A cable or is everyone happy using the programming cable via the joystick?(of course the best solution would be new firmware for the cortex with a compliant CDC implementation, not going to happen I’m afraid). The Cortex is using an example device ID from some dev kit?Why am I not surprised -’Just IFI just silently fix this one in an update. I don’t have the time or energy to start a debate on this but in short, for correctness sake my vote is to ask them nicely if they could bump it onto a short term to do list and get it fixed. This isn’t a big issue but it should be fixed, like I said for correctness sake alone is reason enough.James I wouldn’t rewrite the driver just yet, OS X users aren’t dying on the street because of this one. I’m still fighting a one sided war with Apple over the ability to set my own mouse acceleration curve (and losing I might add).Once again thanks for making us aware of another neat quark these are always a fun read. Cody:James I wouldn’t rewrite the driver just yet, OS X users aren’t dying on the street because of this one.So I found this poor Mac guy dying on the street and he said “please write a driver for OSX” so I did.Version 0.9 is done, serial communication using the USB A-A cable direct to the cortex under Snow Leopard.
It needs some more tweaking and testing under 10.7 and 10.8 but it seems to work. The driver only loads when it detects the cortex, the standard Apple CDC ACM driver is used for the programming cable, I need to make sure everything is playing nicely together so will not release for a few days.Shows under /dev as another tty port, didn’t decide on the final naming yet. Jpearman:So I found this poor Mac guy dying on the street and he said “please write a driver for OSX” so I did.Version 0.9 is done, serial communication using the USB A-A cable direct to the cortex under Snow Leopard. It needs some more tweaking and testing under 10.7 and 10.8 but it seems to work.
The driver only loads when it detects the cortex, the standard Apple CDC ACM driver is used for the programming cable, I need to make sure everything is playing nicely together so will not release for a few days.Shows under /dev as another tty port, didn’t decide on the final naming yet.ATTACH7652/ATTACHAny chance of finding a similar poor Linux guy? Drdanielfc:Any chance of finding a similar poor Linux guy?I don’t really do much with Linux.
There was a link somewhere explaining why they disabled this VID/PID combo, otherwise it may work as it does with windows (although having hacked this driver together I don’t understand why it even works under windows, need to take a look at the setup file again). The thing is, I always use the programming cable to the joystick which is why I never did this before, there’s not much demand. I have not tried it with the PROS flash loader yet, I don’t know what they use to select which port to use. I’ve tested as much as I can today, works with Leopard (different installer) through Mountain Lion.I changed the name of the serial device back to /dev/tty.usbmodemxxxx (where xxxx will be a unique number that depends on which USB port you plug into) so as to be compatible with the PROS flash utility. I preferred the /dev/tty.cortex name but PROS would not detect that as a suitable serial port so usbmodem (which is Mac default) it is. It also works with the stm32flash open source utility I released last year but the PROS utility seems more stable.Install using the normal Mac package installer, it places a single kernel extension called VexCortexCDC.kext in the /System/Library/Extensions folder.
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
March 2023
Categories |