Wow, this really sucks. I got my Kyocera kpc650 working somewhat on edgy eft.
It's an evdo card (cellular broadband, costs around $80/month). But you have
to patch the kernel to keep it from dying all the time. I can't find anybody
else with this particular variant of the patch; the second hunk tends to
differ a lot. Anyway, compiling now; we'll see if it actually works.
Then you have to remember to
modprobe usbserial vendor=0x0c88 product=0x17da
to load the module (vendor and product come from /proc/bus/usb/devices).
Also note that groups of 8 spaces in the patch should be replaced with a tab;
that was the other gotcha I found.
I used kppp to configure the connection. It produces:
/etc/ppp/peers/ppp0:
connect "/usr/sbin/chat -v -f /etc/chatscripts/ppp0"
usepeerdns
noauth
defaultroute
persist
/dev/ttyUSB0
115200
If it still gets wonky: pccardctl eject ; pccardctl insert to kick it.
Here's the patch to usb-serial.c:
# diff -Naur usb-serial.c usb-serial-v620.c
--- usb-serial.c 2005-03-01 23:38:37.000000000 -0800
+++ usb-serial-v620.c 2005-07-22 10:09:59.000000000 -0700
@@ -361,6 +361,7 @@
drivers depend on it.
*/
+static ushort maxSize = 0;
static int debug;
static struct usb_serial *serial_table[SERIAL_TTY_MINORS]; /* initially
all NULL */
static LIST_HEAD(usb_serial_driver_list);
@@ -803,7 +804,7 @@
dev_err(&interface->dev, "No free urbs available\n");
goto probe_error;
}
- buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
+ buffer_size = (endpoint->wMaxPacketSize >
maxSize)?endpoint->wMaxPacketSize:maxSize;
port->bulk_in_size = buffer_size;
port->bulk_in_endpointAddress = endpoint->bEndpointAddress;
port->bulk_in_buffer = kmalloc (buffer_size, GFP_KERNEL);
@@ -1433,3 +1434,5 @@
module_param(debug, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(debug, "Debug enabled or not");
+module_param(maxSize, ushort,0);
+MODULE_PARM_DESC(maxSize,"User specified USB endpoint size");
/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/