Hello. Now that I got my own HandyTech Braille Star 40 (a really cool device btw), I had the chance to play with the USB support. Well, it appears that it was much easier than I thought, because HandyTech uses a well-known chip from GoHubs, which just behaves like a USB->Serial adapter. So we need no modifications to brltty, or whatever program you happen to use. Below is a patch against linux 2.4.19 for those who can use it in the meantime. Stuff already submitted to the USB maintainer, so it should eventually go into some of the next 2.4 releases. For the brltty side, you will probably want to set your device file to /dev/ttyUSB0 or whatever the belkin_sa driver happens to use when it detects the HandyLink adapter. so, to get it working, you need the belkin_sa kernel module from drivers/usb/serial. P.S.: This patch makes the module belkin_sa print that it detected a HandyTech HandyLink device. The version for 2.4.20 I submitted will not do this, as belkin_sa was unified in 2.4.20. It doesn't really matter, all we will need is a note in the HandyTech module README for brltty on which kernel module is needed. --- /tmp/belkin_sa.h 2001-10-01 22:45:43.000000000 +0200 +++ linux/drivers/usb/serial/belkin_sa.h 2002-09-11 22:22:39.000000000 +0200 @@ -48,6 +48,8 @@ #define GOHUBS_VID 0x0921 /* GoHubs vendor id */ #define GOHUBS_PID 0x1000 /* GoHubs single port serial converter's id (identical to the Peracom device) */ +#define HANDYLINK_PID 0x1200 /* HandyLink USB's id (identical to the Peracom device) */ + /* Vendor Request Interface */ #define BELKIN_SA_SET_BAUDRATE_REQUEST 0 /* Set baud rate */ #define BELKIN_SA_SET_STOP_BITS_REQUEST 1 /* Set stop bits (1,2) */ --- /tmp/belkin_sa.c 2002-09-11 22:18:54.000000000 +0200 +++ linux/drivers/usb/serial/belkin_sa.c 2002-09-11 22:20:28.000000000 +0200 @@ -108,6 +108,7 @@ { USB_DEVICE(BELKIN_OLD_VID, BELKIN_OLD_PID) }, { USB_DEVICE(PERACOM_VID, PERACOM_PID) }, { USB_DEVICE(GOHUBS_VID, GOHUBS_PID) }, + { USB_DEVICE(GOHUBS_VID, HANDYLINK_PID) }, { USB_DEVICE(BELKIN_DOCKSTATION_VID, BELKIN_DOCKSTATION_PID) }, { } /* Terminating entry */ }; @@ -137,6 +138,11 @@ { } /* Terminating entry */ }; +static __devinitdata struct usb_device_id handylink_table [] = { + { USB_DEVICE(GOHUBS_VID, HANDYLINK_PID) }, + { } /* Terminating entry */ +}; + MODULE_DEVICE_TABLE (usb, id_table_combined); /* All of the device info needed for the Belkin dockstation serial converter */ @@ -245,6 +251,27 @@ shutdown: belkin_sa_shutdown, }; +/* the HandyTech HandyLink USB device is the same as the Peracom single port adapter */ +static struct usb_serial_device_type handylink_device = { + name: "HandyTech HandyLink USB Braille Display Serial Adapter", + id_table: handylink_table, /* the GO-COM232 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, +}; + struct belkin_sa_private { unsigned long control_state; @@ -647,6 +674,7 @@ usb_serial_register (&belkin_old_device); usb_serial_register (&peracom_device); usb_serial_register (&gocom232_device); + usb_serial_register (&handylink_device); info(DRIVER_DESC " " DRIVER_VERSION); return 0; } -- CYa, Mario _______________________________________________ Blinux-list@redhat.com https://listman.redhat.com/mailman/listinfo/blinux-list