I have a Belkin USB Dockstation (F5U120-PC) which has a serial amongst other things. The current Belkin serial driver doesn't talk to it.
The usb serial has a vendor id/product id of 0x050d/0x1203. I modified the
driver by adding another struct usb_serial_device_type with everything
else the same as the standard Belkin serial converter and it seems
to work.
I've included a snippet of my kernel messages plus my patch against 2.4.9.
thanks
Amy
--------------------------------------------------------------------
diff -uNr orig/belkin_sa.c new/belkin_sa.c
--- orig/belkin_sa.c Sat Sep 29 00:40:48 2001
+++ new/belkin_sa.c Sat Sep 29 00:42:35 2001
@@ -108,6 +108,12 @@
{ USB_DEVICE(BELKIN_OLD_VID, BELKIN_OLD_PID) },
{ USB_DEVICE(PERACOM_VID, PERACOM_PID) },
{ USB_DEVICE(GOHUBS_VID, GOHUBS_PID) },
+ { USB_DEVICE(BELKIN_DOCKSTATION_VID, BELKIN_DOCKSTATION_PID) },
+ { } /* Terminating entry */
+};
+
+static __devinitdata struct usb_device_id belkin_dockstation_table [] = {
+ { USB_DEVICE(BELKIN_DOCKSTATION_VID, BELKIN_DOCKSTATION_PID) },
{ } /* Terminating entry */
};
@@ -133,6 +139,27 @@
MODULE_DEVICE_TABLE (usb, id_table_combined);
+/* All of the device info needed for the Belkin dockstation serial converter */
+struct usb_serial_device_type belkin_dockstation_device = {
+ name: "Belkin F5U120-PC USB Serial Adapter",
+ id_table: belkin_dockstation_table, /* the Belkin
+F5U103 device */
+ needs_interrupt_in: MUST_HAVE, /* this device must
+have an interrupt in endpoint */
+ needs_bulk_in: MUST_HAVE, /* this device must
+have a bulk in endpoint */
+ needs_bulk_out: MUST_HAVE, /* this device must
+have a bulk out endpoint */
+ num_interrupt_in: 1,
+ num_bulk_in: 1,
+ num_bulk_out: 1,
+ num_ports: 1,
+ open: belkin_sa_open,
+ close: belkin_sa_close,
+ read_int_callback: belkin_sa_read_int_callback, /* How we get the
+status info */
+ ioctl: belkin_sa_ioctl,
+ set_termios: belkin_sa_set_termios,
+ break_ctl: belkin_sa_break_ctl,
+ startup: belkin_sa_startup,
+ shutdown: belkin_sa_shutdown,
+};
+
/* All of the device info needed for the Belkin serial converter */
struct usb_serial_device_type belkin_sa_device = {
name: "Belkin F5U103 USB Serial Adapter",
@@ -602,6 +629,7 @@
static int __init belkin_sa_init (void)
{
+ usb_serial_register (&belkin_dockstation_device);
usb_serial_register (&belkin_sa_device);
usb_serial_register (&belkin_old_device);
usb_serial_register (&peracom_device);
@@ -613,6 +641,7 @@
static void __exit belkin_sa_exit (void)
{
+ usb_serial_deregister (&belkin_dockstation_device);
usb_serial_deregister (&belkin_sa_device);
usb_serial_deregister (&belkin_old_device);
usb_serial_deregister (&peracom_device);
diff -uNr orig/belkin_sa.h new/belkin_sa.h
--- orig/belkin_sa.h Sat Sep 29 00:40:49 2001
+++ new/belkin_sa.h Sat Sep 29 00:26:16 2001
@@ -33,6 +33,9 @@
#ifndef __LINUX_USB_SERIAL_BSA_H
#define __LINUX_USB_SERIAL_BSA_H
+#define BELKIN_DOCKSTATION_VID 0x050d /* Vendor Id */
+#define BELKIN_DOCKSTATION_PID 0x1203 /* Product Id */
+
#define BELKIN_SA_VID 0x050d /* Vendor Id */
#define BELKIN_SA_PID 0x0103 /* Product Id */
--------------------------------------------------------------------
hub.c: USB new device connect on bus1/1, assigned device number 3
usb.c: kmalloc IF c6a5e8fc, numif 1
usb.c: new device strings: Mfr=0, Product=0, SerialNumber=0
hub.c: USB hub found
hub.c: 7 ports detected
hub.c: standalone hub
hub.c: individual port power switching
hub.c: individual port over-current protection
hub.c: Port indicators are not supported
hub.c: power on to power good time: 100ms
hub.c: hub controller current requirement: 100mA
hub.c: port removable status: RRRRRRR
hub.c: local power source is good
hub.c: no over-current condition exists
hub.c: enabling power on all ports
usb.c: hub driver claimed interface c6a5e8fc
usb.c: kusbd: /sbin/hotplug add 3
hub.c: port 5 connection change
hub.c: port 5, portstatus 101, change 1, 12 Mb/s
hub.c: port 5, portstatus 103, change 10, 12 Mb/s
hub.c: USB new device connect on bus1/1/5, assigned device number 4
usb.c: kmalloc IF c6a5e9c4, numif 1
usb.c: new device strings: Mfr=1, Product=2, SerialNumber=3
usb.c: USB device number 4 default language ID 0x409
Manufacturer: Belkin Components
Product: USB-232 Adapter
SerialNumber: BL2350
usbserial.c: Belkin F5U120-PC USB Serial Adapter converter detected
belkin_sa.c: bcdDevice: 0207, bfc: 0
usbserial.c: Belkin F5U120-PC USB Serial Adapter converter now attached to ttyUSB0 (or
usb/tts/0 for devfs)
usb.c: serial driver claimed interface c6a5e9c4
usb.c: kusbd: /sbin/hotplug add 4
hub.c: port 6 connection change
hub.c: port 6, portstatus 301, change 1, 1.5 Mb/s
hub.c: port 6, portstatus 303, change 10, 1.5 Mb/s
hub.c: USB new device connect on bus1/1/6, assigned device number 5
usb.c: kmalloc IF c9414fa4, numif 2
usb.c: skipped 1 class/vendor specific interface descriptors
usb.c: skipped 1 class/vendor specific interface descriptors
usb.c: new device strings: Mfr=1, Product=2, SerialNumber=0
usb.c: USB device number 5 default language ID 0x409
Manufacturer: Belkin Components
Product: USB-PS2 Adapter
usb.c: unhandled interfaces on device
usb.c: USB device 5 (vend/prod 0x50d/0x119) is not claimed by any active driver.
Length = 18
DescriptorType = 01
USB version = 1.10
Vendor:Product = 050d:0119
MaxPacketSize0 = 8
NumConfigurations = 1
Device version = 1.20
Device Class:SubClass:Protocol = 00:00:00
Per-interface classes
Configuration:
bLength = 9
bDescriptorType = 02
wTotalLength = 003b
bNumInterfaces = 02
bConfigurationValue = 01
iConfiguration = 00
bmAttributes = a0
MaxPower = 100mA
Interface: 0
Alternate Setting: 0
bLength = 9
bDescriptorType = 04
bInterfaceNumber = 00
bAlternateSetting = 00
bNumEndpoints = 01
bInterface Class:SubClass:Protocol = 03:01:01
iInterface = 00
Endpoint:
bLength = 7
bDescriptorType = 05
bEndpointAddress = 81 (in)
bmAttributes = 03 (Interrupt)
wMaxPacketSize = 0008
bInterval = 0a
Interface: 1
Alternate Setting: 0
bLength = 9
bDescriptorType = 04
bInterfaceNumber = 01
bAlternateSetting = 00
bNumEndpoints = 01
bInterface Class:SubClass:Protocol = 03:01:02
iInterface = 00
Endpoint:
bLength = 7
bDescriptorType = 05
bEndpointAddress = 82 (in)
bmAttributes = 03 (Interrupt)
wMaxPacketSize = 0004
bInterval = 0a
usb.c: kusbd: /sbin/hotplug add 5
hub.c: port 7 connection change
hub.c: port 7, portstatus 101, change 1, 12 Mb/s
hub.c: port 7, portstatus 103, change 10, 12 Mb/s
hub.c: USB new device connect on bus1/1/7, assigned device number 6
usb.c: kmalloc IF c6a5eb54, numif 1
usb.c: new device strings: Mfr=0, Product=0, SerialNumber=0
usb.c: unhandled interfaces on device
usb.c: USB device 6 (vend/prod 0x50d/0x1202) is not claimed by any active driver.
Length = 18
DescriptorType = 01
USB version = 1.00
Vendor:Product = 050d:1202
MaxPacketSize0 = 8
NumConfigurations = 1
Device version = 1.04
Device Class:SubClass:Protocol = 00:00:00
Per-interface classes
Configuration:
bLength = 9
bDescriptorType = 02
wTotalLength = 004e
bNumInterfaces = 01
bConfigurationValue = 01
iConfiguration = 00
bmAttributes = 80
MaxPower = 98mA
Interface: 0
Alternate Setting: 0
bLength = 9
bDescriptorType = 04
bInterfaceNumber = 00
bAlternateSetting = 00
bNumEndpoints = 01
bInterface Class:SubClass:Protocol = 07:01:01
iInterface = 00
Endpoint:
bLength = 7
bDescriptorType = 05
bEndpointAddress = 01 (out)
bmAttributes = 02 (Bulk)
wMaxPacketSize = 0040
bInterval = 00
Alternate Setting: 1
bLength = 9
bDescriptorType = 04
bInterfaceNumber = 00
bAlternateSetting = 01
bNumEndpoints = 02
bInterface Class:SubClass:Protocol = 07:01:02
iInterface = 00
Endpoint:
bLength = 7
bDescriptorType = 05
bEndpointAddress = 01 (out)
bmAttributes = 02 (Bulk)
wMaxPacketSize = 0040
bInterval = 00
Endpoint:
bLength = 7
bDescriptorType = 05
bEndpointAddress = 82 (in)
bmAttributes = 02 (Bulk)
wMaxPacketSize = 0040
bInterval = 00
Alternate Setting: 2
bLength = 9
bDescriptorType = 04
bInterfaceNumber = 00
bAlternateSetting = 02
bNumEndpoints = 03
bInterface Class:SubClass:Protocol = ff:00:ff
iInterface = 00
Endpoint:
bLength = 7
bDescriptorType = 05
bEndpointAddress = 01 (out)
bmAttributes = 02 (Bulk)
wMaxPacketSize = 0040
bInterval = 00
Endpoint:
bLength = 7
bDescriptorType = 05
bEndpointAddress = 82 (in)
bmAttributes = 02 (Bulk)
wMaxPacketSize = 0040
bInterval = 00
Endpoint:
bLength = 7
bDescriptorType = 05
bEndpointAddress = 83 (in)
bmAttributes = 03 (Interrupt)
wMaxPacketSize = 0004
bInterval = 01
usb.c: kusbd: /sbin/hotplug add 6
usb.c: registered new driver usblp
usb.c: registered new driver keyboard
printer.c: usblp0: USB Bidirectional printer dev 6 if 0 alt 1
usb.c: usblp driver claimed interface c6a5eb54
printer.c: v0.8:USB Printer Device Class driver
input0: Belkin Components USB-PS2 Adapter on usb1:5.0
usb.c: keyboard driver claimed interface c9414fa4
usbkbd.c: :USB HID Boot Protocol keyboard driver
usb.c: registered new driver hid
usb-uhci.c: interrupt, status 2, frame# 2011
usb-uhci.c: interrupt, status 3, frame# 2013
input1: USB HID v1.00 Mouse [Belkin Components USB-PS2 Adapter ] on usb1:5.1
usb.c: hid driver claimed interface c9414fbc
usb.c: registered new driver hiddev
hid-core.c: v1.8 Andreas Gal, Vojtech Pavlik <[EMAIL PROTECTED]>
hid-core.c: USB HID support drivers
usb.c: registered new driver usb_mouse
usbmouse.c: v1.6:USB HID Boot Protocol mouse driver
mice: PS/2 mouse device common for all mice
hub.c: port 1 connection change
hub.c: port 1, portstatus 100, change 3, 12 Mb/s
usb.c: USB disconnect on device 3
usb.c: USB disconnect on device 4
usbserial.c: Belkin F5U120-PC USB Serial Adapter converter now disconnected from
ttyUSB0
usb.c: kusbd: /sbin/hotplug remove 4
usb-uhci.c: interrupt, status 3, frame# 180
usb.c: USB disconnect on device 5
usb.c: kusbd: /sbin/hotplug remove 5
usb.c: USB disconnect on device 6
printer.c: usblp0: removed
usb.c: kusbd: /sbin/hotplug remove 6
usb.c: kusbd: /sbin/hotplug remove 3
hub.c: port 1 enable change, status 100
msg02647/pgp00000.pgp
Description: PGP signature
