HandyTech Displays and the USB port

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

 



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

[Index of Archives]     [Linux Speakup]     [Fedora]     [Linux Kernel]     [Yosemite News]     [Big List of Linux Books]