Backport of a linux-2.6.19 change to support extended reach firmware made by speedtouch usb maintainer Extended reach firmware is only available on v4.00 modem (silver) Apply patch from src directory --- modem_run.c.orig 2007-01-23 10:42:16.000000000 +0100 +++ modem_run.c 2007-01-23 10:49:57.000000000 +0100 @@ -77,6 +77,13 @@ #define SIZE_e 1 #define SIZE_f 1 +#define B_MAX_DSL 8128 +#define MODEM_MODE 11 +#define MODEM_OPTION_LENGTH 16 +static unsigned char MODEM_OPTION[MODEM_OPTION_LENGTH] = { + 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + /***************************************************************************** * Global variables ******************************************************************************/ @@ -821,6 +828,30 @@ if (n<0) report(0, REPORT_ERROR, "URB150\n"); + /* Extra initialisation in recent drivers - gives higher speeds */ + + /* URBext1 */ + buf[0] = MODEM_MODE; + n = pusb_control_msg(fdusb, 0x01, 0x40, 0x11, 0x00, buf, 1, 100); + if (n < 0) + report(0, REPORT_ERROR, "URBext1\n"); + + /* URBext2 */ + /* This seems to be the one which actually triggers the higher sync + rate -- it does require the new firmware too, although it works OK + with older firmware */ + n = pusb_control_msg(fdusb, 0x01, 0x40, 0x14, 0x00, MODEM_OPTION, + MODEM_OPTION_LENGTH, 100); + if (n < 0) + report(0, REPORT_ERROR, "URBext2\n"); + + /* URBext3 */ + buf[0] = B_MAX_DSL & 0xff; + buf[1] = B_MAX_DSL >> 8; + n = pusb_control_msg(fdusb, 0x01, 0x40, 0x12, 0x00, buf, 2, 100); + if (n < 0) + report(0, REPORT_ERROR, "URBext3\n"); + } /*