FX3 on Linux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Knowing that you have experts in USB 3.0 support for Linux, I am writing to your organization hoping that you may be able to offer some direction on a problem I have encountered.

I am trying to track down a problem I am having with a USB 3.0 PCIe-x1 card on Linux while trying to talk to a Cypress FX3 explorer board. I posted the following to the Cypress forums. However, after further investigation, I think it is the ASM1042 controller on the PCIe card. Other than going to a different USB 3.0 card, is there anything from the Linux side that I might be able to do to get by the error condition described below? I am doing asynchronous reads through libusb. Thanks for your help and insight.

---- Cypress Post ----
I have run into an odd problem using the FX3 (CYUSB3KIT-003) on Linux using libusb.
 
I have a java test app that calls down through C++ DLLs (so, dylib) to communicate
with the FX3 (which is running the default bulk src and sink firmware that came
programmed on the board). It does a simple sequence of operations: open, write block,
read block, single huge read of data, and close. Prior to each read, I fill the target
buffer with a set pattern. The FX3 firmware, on a read, fills the target with 0xAA,
overwriting my pattern as it should. The blue LED on the board is blinking, so I know
we are using USB 3.0.
 
For Windows, these operations go through WinUSB. There are no problems. Everything
works well. Likewise everything works well with the Mac OSX using libusb. The
test programs can be run any number of times and the operations and incoming data
are fine.
 
With Linux, the first time through the test program, everything is fine. However,
running the program a second time results in the very first read either timing out with
the target buffer being filled with 0x00 (on one of my test machines) or (on another
test machine) having the read "succeed" (result indicates the number of bytes to be
read were read without error) but not having anything change in the target buffer.
If the read is immediately retried, it works fine (or if subsequent different reads
are done, they work fine).
 
It stays in this state until I either unplug and replug the board or reset the
system. On a couple of occasions, after unplugging and replugging the board, the
blue LED on the board does not even come on at all. At that point, I have to reboot
the system in order for it to even recognize that the FX3 is plugged in.
 
When I plug the FX3 board into a USB 2.0 only socket on the Linux machine (blue LED
on board is on solid), I see no problems. It is obviously slower, but everything
works as expected.
 
At this point, I am suspecting that either the Linux USB 3.0 handling has a problem,
libusb has a problem (though it worked fine on the 2.0 port), or the FX3 has a
problem (unlikely).
 
Are there know issues in using the FX3 on a USB 3.0 port on Linux? I am running a
64-bit quad core Xeon Intel machine running Mint 16. I have a PPA Int'l USB 3.0 SuperSpeed
PCIe-x1 card that provides two USB 3.0 ports (per PPA's support group, the
GT50PCIEUSB3 USB 3.0 controller uses the ASM1042 chipset).
 
Thanks.
---- End Cypress Post ----
 

> lspci -vv (output for ASM1042 controller)

02:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller (prog-if 30 [XHCI])
        Subsystem: Device 1234:5678
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at d4100000 (64-bit, non-prefetchable) [size=32K]
        Capabilities: <access denied>
        Kernel driver in use: xhci_hcd

> lspci | grep USB
00:1a.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:1a.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5
00:1a.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
00:1d.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
00:1d.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
00:1d.2 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
00:1d.3 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
00:1d.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1
02:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller

Thanks again.

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux