Error » Hardware Error!! » Hardware tutorials » Linux Kernel Support for the HE460A USB 2.0 PCI Expansion Card

Hardware tutorials All Knowledge Info and links to posted here

Post New Thread Reply
  Linux Kernel Support for the HE460A USB 2.0 PCI Expansion Card
LinkBack Thread Tools Display Modes
Old 30-Dec-2006, 11:17 PM   #1 (permalink)
Administrator
 
Anilrgowda's Avatar

Posts: 18,708
Join Date: Jan 2006
Rep Power: 10 Anilrgowda is on a distinguished road

IM:
Default Linux Kernel Support for the HE460A USB 2.0 PCI Expansion Card

Speaking of PC accessories, we recently purchased a 6 port USB 2.0 card off of Ebay for $10. The board came with two USB cables and a box that was intended to be placed in a drive bay for front-panel access to 2 of the ports; however, it works equally well if you run the cords out of the back of the CPU and put the bay on your desk. All the card says on it is USB 2.0 PCI TO USB 2.0 Card. The packaging is generic as well. It turns out that this is an model HE460A H_E brand device made in China by Shunde ZhuoHua Electronic Co Ltd. Here is a link to the product details.

We have an embedded USB controller on our motherboard from 2001. It turns out that the USB driver is different than the driver for the new card. Not a surprise, really, but kind of annoying. After installing the PCI card and rebooting, we were unable to see our Freecom USBCard. The whole idea of the expansion card was so we could plug in the Freecom card quickly and easily. What to do?

What to do? Recompile the Linux kernel, of course. We like to stick the USB stuff in the kernel, not as modules. It works better... well, Agatha thinks so... Urbana probably wouldn't do it this way... she certainly has no problem using the printer hooked up to Agatha's machine, though. Anyway, the key thing is to add these config options to the kernel:


CONFIG_USB_EHCI_HCD=y
CONFIG_USB_OHCI=y

We previously just had:


CONFIG_USB_UHCI_ALT=y

Here is Agatha's .config file for 2.4.25. This works with many USB devices, including an HP 1200 Printer, a Handspring Visor, a Sony Cyber-shot model DSC-U20 camera, and the Freecom USBCard. It handles both the embedded USB controller on the motherboard, and our new controller. The kernel is 1.2 megs. A lot of stuff is embedded in the kernel. Again, Agatha *likes that*.

Here are some interesting entries from dmesg:


usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
PCI: Found IRQ 9 for device 02:0b.3
PCI: Sharing IRQ 9 with 00:1f.4
ehci_hcd 02:0b.3: ALi Corporation USB 2.0 Controller
ehci_hcd 02:0b.3: irq 9, pci mem f881c000
usb.c: new USB bus registered, assigned bus number 1
PCI: cache line size of 128 is not supported by device 02:0b.3
ehci_hcd 02:0b.3: USB 2.0 enabled, EHCI 1.00, driver 2003-Dec-29/2.4
hub.c: USB hub found
hub.c: 6 ports detected
host/uhci.c: USB Universal Host Controller Interface driver v1.1
PCI: Found IRQ 9 for device 00:1f.2
PCI: Setting latency timer of device 00:1f.2 to 64
host/uhci.c: USB UHCI at I/O 0xb400, IRQ 9
usb.c: new USB bus registered, assigned bus number 2
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Found IRQ 9 for device 00:1f.4
PCI: Sharing IRQ 9 with 02:0b.3
PCI: Setting latency timer of device 00:1f.4 to 64
host/uhci.c: USB UHCI at I/O 0xb000, IRQ 9
usb.c: new USB bus registered, assigned bus number 3
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Found IRQ 9 for device 02:0b.0
host/usb-ohci.c: USB OHCI at membase 0xf881e000, IRQ 9
host/usb-ohci.c: usb-02:0b.0, ALi Corporation USB 1.1 Controller
usb.c: new USB bus registered, assigned bus number 4
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Found IRQ 9 for device 02:0b.1
host/usb-ohci.c: USB OHCI at membase 0xf8820000, IRQ 9
host/usb-ohci.c: usb-02:0b.1, ALi Corporation USB 1.1 Controller (#2)
usb.c: new USB bus registered, assigned bus number 5
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Found IRQ 9 for device 02:0b.2
PCI: Sharing IRQ 9 with 02:0a.0
host/usb-ohci.c: USB OHCI at membase 0xf8822000, IRQ 9
host/usb-ohci.c: usb-02:0b.2, ALi Corporation USB 1.1 Controller (#3)
usb.c: new USB bus registered, assigned bus number 6
hub.c: USB hub found
hub.c: 2 ports detected
usb.c: registered new driver usblp
printer.c: v0.13: USB Printer Device Class driver
usb.c: registered new driver serial
usbserial.c: USB Serial Driver core v1.4
usbserial.c: USB Serial support registered for Handspring Visor / Treo / Palm 4.0 / Clié.x
usbserial.c: USB Serial support registered for Sony Clié.5
visor.c: USB HandSpring Visor, Palm m50x, Treo, Sony Cliériver v1.7
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
USB Mass Storage support registered.
.
.
.
hub.c: new USB device 02:0b.3-2, assigned address 2
usb-storage: act_altsettting is 0
usb-storage: id_index calculated to be: 89
usb-storage: Array length appears to be: 91
usb-storage: USB Mass Storage device detected
usb-storage: Endpoints: In: 0xf7ca5e00 Out: 0xf7ca5e14 Int: 0x00000000 (Period 0)
usb-storage: New GUID 1963130000006b3b14000634
usb-storage: GetMaxLUN command result is 1, data is 0
usb-storage: Transport: Bulk
usb-storage: Protocol: Transparent SCSI
usb-storage: *** thread sleeping.
scsi1 : SCSI emulation for USB Mass Storage devices
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Command INQUIRY (6 bytes)
usb-storage: 12 00 00 00 ff 00 bd f7 ac ba be f7
usb-storage: Bulk command S 0x43425355 T 0x1 Trg 0 LUN 0 L 255 F 128 CL 6
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_transfer_partial(): xfer 255 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 36/255
usb-storage: Bulk data transfer result 0x1
usb-storage: Attempting to get CSW...
usb-storage: Bulk status result = 0
usb-storage: Bulk status Sig 0x53425355 T 0x1 R 0 Stat 0x0
usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
Vendor: Model: USB Card Rev: 1.13
Type: Direct-Access ANSI SCSI revision: 02
.
.
.
hub.c: new USB device 00:1f.2-1, assigned address 2
printer.c: usblp0: USB Bidirectional printer dev 2 if 0 alt 1
proto 2 vid 0x03F0 pid 0x0317

Here are the /proc/bus/usb/devices entries:


T: Bus=06 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB OHCI Root Hub
S: SerialNumber=f8822000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=05 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB OHCI Root Hub
S: SerialNumber=f8820000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB OHCI Root Hub
S: SerialNumber=f881e000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI-alt Root Hub
S: SerialNumber=b000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI-alt Root Hub
S: SerialNumber=b400
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=03f0 ProdID=0317 Rev= 1.00
S: Manufacturer=HewLett Packard
S: Product=HP LaserJet 1200
S: SerialNumber=00CNCV116072
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=07(print) Sub=01 Prot=03 Driver=usblp
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
I: If#= 0 Alt= 1 #EPs= 2 Cls=07(print) Sub=01 Prot=02 Driver=usblp
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 0 Alt= 2 #EPs= 1 Cls=07(print) Sub=01 Prot=01 Driver=usblp
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=16 #Cfgs= 1
P: Vendor=082d ProdID=0100 Rev= 1.00
S: Manufacturer=Handspring Inc
S: Product=Handspring Visor
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=serial
E: Ad=81(I) Atr=02(Bulk) MxPS= 16 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 16 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.04
S: Manufacturer=Linux 2.4.25 ehci_hcd
S: Product=ALi Corporation USB 2.0 Controller
S: SerialNumber=02:0b.3
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1963 ProdID=1300 Rev= 0.50
S: Manufacturer=
S: Product=USB Card
S: SerialNumber=6B3B14000634
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
Anilrgowda is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit!
Reply With Quote
   


   
Post New Thread Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT -8. The time now is 11:00 AM.

Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0

DMCA Policy

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227