usb/138659: uftdi driver broken in RELENG_8/CURRENT

Pierre-Luc Drouin pldrouin at pldrouin.net
Sun Sep 27 05:05:42 UTC 2009


Hans Petter Selasky wrote:
> On Tuesday 22 September 2009 20:22:06 Pierre-Luc Drouin wrote:
>   
>> Hans Petter Selasky wrote:
>>     
>>> On Tuesday 22 September 2009 18:40:40 Pierre-Luc Drouin wrote:
>>>       
>>>> Hans Petter Selasky wrote:
>>>>         
>>>>> On Tuesday 22 September 2009 18:15:19 Pierre-Luc Drouin wrote:
>>>>>           
>>>>>> Hans Petter Selasky wrote:
>>>>>>             
>>>>>>> On Tuesday 22 September 2009 17:21:28 Pierre-Luc Drouin wrote:
>>>>>>>               
>>>>>>>>>> Thanks!
>>>>>>>>>>                     
>>>>>>>>> It indicates that your device is not sending any data.
>>>>>>>>>
>>>>>>>>> --HPS
>>>>>>>>>                   
>>>>>>>> So does it mean that the write statement (a status request) is not
>>>>>>>> transmitted to the device either?
>>>>>>>>                 
>>>>>>> No, the "xxx_get()" message means that the data you write is sent and
>>>>>>> transmitted.
>>>>>>>
>>>>>>> BTW: I have a FTDI adapter here, and it works fine with loopback when
>>>>>>> the baudrate is set correctly.
>>>>>>>
>>>>>>>               
>>>>>>>> Because this write statement should be
>>>>>>>> followed by data sent from the device and it effectively does on
>>>>>>>> Linux. And about SIGIO, shouldn't this signal be generated only when
>>>>>>>> there is data available to read? Why is it generated in asynchronous
>>>>>>>> mode and then the read statement returns EINTR?
>>>>>>>>                 
>>>>>>> Ed has to answer these questions. This stuff is not handled in the
>>>>>>> USB stack for FTDI devices.
>>>>>>>
>>>>>>> --HPS
>>>>>>>               
>>>>>> In the manual page for the uftdi driver, the chip I am using (FT232BL)
>>>>>> is not listed. According to the FTDI website, it is based on
>>>>>> FT8U232AM, but  it has extra functionalities. Have you had the chance
>>>>>> to test an device that uses either a FT232BM, FT232BL or FT232BQ chip?
>>>>>> I just tested the device on FreeBSD 7.2 and it does not work either...
>>>>>>             
>>>>> No, I haven't.
>>>>>
>>>>> --HPS
>>>>>           
>>>> Are there additional tests I can do in synchronous mode to try pinning
>>>> down the problem?
>>>>         
>>> Hi,
>>>
>>> If the device doesn't work, then there are probably some FTDI USB
>>> registers which are not programmed correctly.
>>>
>>> If you could debug that it would be great.
>>>
>>> --HPS
>>>       
>> ok, so yes I can probably try debugging the driver for the FT232BL chip,
>> but the support for my device's manufacturer is very limited, so it
>> might not be optimal to try doing debugging with that. Plus although I
>> do programming all day (statistical data analysis), I've never done
>> coding at the kernel level or driver programming, so I will need to get
>> familiar with it first.
>>     
>
> Don't worry about your coding skills. If you can add the code that makes it 
> working, I will fix the rest for you.
>
>   
>> Would something like
>> http://www.eurodesign.bg/eudesignbg/USB_RS232.html be the ideal tool for
>> debugging?
>>     
>
> I don't know ....
>
> --HPS
>   
Hi,

so I compared the control commands sent by uftdi to the ones sent by 
ftdio_sio (linux kernel module) and I tried different hacks to finally 
realize that the problem was that FreeBSD was not sending the right baud 
rate to the device. FreeBSD uses c_ospeed (in termios struct) to get the 
baud rate while Linux uses c_cflag. So I removed the baud rate from 
c_cflag in my code and I am now using cfsetispeed and cfsetospeed. I 
though the termios structure and flags were Posix but it looks like it's 
not :S.


So to conclude, it looks like uftdi is working fine :)

Thanks for the support!


More information about the freebsd-usb mailing list