Adding AlphaSmart Dana Support to uvisor issues

Stephen Hurd shurd at sasktel.net
Thu Feb 18 15:43:38 UTC 2010


I've got a pair of AlphaSmart Dana Palm systems which sync via USB in
Windows and want to sync with my 8-STABLE system...

I've added the following lines to sys/dev/usb/usbdevs:
vendor ALPHASMART       0x081e  AlphaSmart, Inc.
/* AlphaSmart, Inc. products */
product ALPHASMART DANA_KB      0xdbac  AlphaSmart Dana Keyboard
product ALPHASMART DANA_SYNC    0xdf00  AlphaSmart Dana HotSync

And the following to sys/dev/usb/serial/uvisor.c:
         UVISOR_DEV(ALPHASMART, DANA_SYNC, UVISOR_FLAG_PALM4),

uvisor will now attach, but using pilot-xfer fails to start the sync (no
input recieved from cuaU0).  A trace of a Win32 sync is available at 
http://nix.synchro.net/DanaSyncCapture.txt. It looks like the initial 
negotiation is the same as what uvisor does, but the read callback is 
not called after the initial setup...

Here's the output with hw.usb.[ucom|uvisor].debug=1 when I select sync
(yes, the device is a USB keyboard when it's not syncing) and run
pilot-xfer -p /dev/cuaU0 -l (at 22:38:10):

Feb 17 22:37:46 ace kernel: ugen0.2: <AlphaSmart, Inc.> at usbus0
(disconnected)
Feb 17 22:37:46 ace kernel: ukbd0: at uhub0, port 1, addr 2 (disconnected)
Feb 17 22:37:48 ace kernel: ugen0.2: <AlphaSmart, Inc.> at usbus0
Feb 17 22:37:48 ace kernel: uvisor_attach: sc=0xc6651e00
Feb 17 22:37:48 ace kernel: uvisor0: <AlphaSmart, Inc. Palm Handheld,
class 0/0, rev 1.00/1.00, addr 2> on usbus0
Feb 17 22:37:48 ace kernel: uvisor_init: done
Feb 17 22:37:48 ace kernel: ucom_attach_tty: tp = 0xc6650c00, unit = 0
Feb 17 22:37:48 ace kernel: ucom_attach_tty: ttycreate: U0
Feb 17 22:38:10 ace kernel: ucom_open: tp = 0xc6650c00
Feb 17 22:38:10 ace kernel: ucom_dtr: onoff = 1
Feb 17 22:38:10 ace kernel: ucom_line_state: on=0x01, off=0x00
Feb 17 22:38:10 ace kernel: ucom_rts: onoff = 1
Feb 17 22:38:10 ace kernel: ucom_line_state: on=0x02, off=0x00
Feb 17 22:38:10 ace kernel: ucom_ring: onoff = 0
Feb 17 22:38:10 ace kernel: ucom_line_state: on=0x00, off=0x08
Feb 17 22:38:10 ace kernel: ucom_break: onoff = 0
Feb 17 22:38:10 ace kernel: ucom_line_state: on=0x00, off=0x04
Feb 17 22:38:10 ace kernel: ucom_status_change:
Feb 17 22:38:10 ace kernel: ucom_param: sc = 0xc6651e30
Feb 17 22:38:10 ace kernel: ucom_dtr: onoff = 1
Feb 17 22:38:10 ace kernel: ucom_line_state: on=0x01, off=0x00
Feb 17 22:38:10 ace kernel: ucom_rts: onoff = 1
Feb 17 22:38:10 ace kernel: ucom_line_state: on=0x02, off=0x00
Feb 17 22:38:10 ace kernel: ucom_cfg_open:
Feb 17 22:38:10 ace kernel: ucom_ioctl: cmd = 0x402c7413
Feb 17 22:38:10 ace kernel: ucom_ioctl: cmd = 0x402c7413
Feb 17 22:38:10 ace kernel: ucom_ioctl: cmd = 0x802c7414
Feb 17 22:38:10 ace kernel: ucom_param: sc = 0xc6651e30
Feb 17 22:38:10 ace kernel: ucom_ioctl: cmd = 0x8004667e
Feb 17 22:38:10 ace kernel: ucom_ioctl: cmd = 0x8004667d
Feb 17 22:38:10 ace kernel: ucom_ioctl: cmd = 0x402c7413
Feb 17 22:38:10 ace kernel: ucom_ioctl: cmd = 0x802c7415
Feb 17 22:38:10 ace kernel: ucom_get_data: cnt=0
Feb 17 22:38:58 ace kernel: ugen0.2: <AlphaSmart, Inc.> at usbus0
(disconnected)
Feb 17 22:38:58 ace kernel: uvisor0: at uhub0, port 1, addr 2 (disconnected)
Feb 17 22:38:58 ace kernel: uvisor_detach: sc=0xc6651e00
Feb 17 22:38:58 ace kernel: ucom_detach_tty: sc = 0xc6651e30, tp =
0xc6650c00
Feb 17 22:38:58 ace kernel: ucom_close: tp=0xc6650c00
Feb 17 22:38:58 ace kernel: ucom_close: tp=0xc6650c00 already closed
Feb 17 22:39:05 ace kernel: ugen0.2: <AlphaSmart, Inc.> at usbus0
Feb 17 22:39:05 ace kernel: ukbd0: <AlphaSmart, Inc. Palm Handheld,
class 0/0, rev 1.00/1.00, addr 2> on usbus0
Feb 17 22:39:05 ace kernel: kbd2 at ukbd0

How can I get a USB trace to compare with the one from Windows and/or
what should be my next step?



More information about the freebsd-usb mailing list