I cut off the ADM202 completely and very thoroughly cleaned again with a soft toothbrush dipped in 70% rubbing alcohol this time. I tried to make sure the bristles got under the yellow wires too. Things look even cleaner now but resistances haven't changed.
Wacom driver and usb serial still won't respond at 38400. I then tried issuing the "BA38" command at 9600 baud. No response to that, and sending ~# at 9600 baud continued to get the standard response. Then I tried BA19 for 19200 baud. No response, but sending ~# no longer gave a response either. I changed the port speed in realterm to 19200 and Teensy responded with "19200" and ~# got a response. I tested sending hundreds of ~# and never got corruption.
So I changed the standard firmware to 19200. I put the pen down and it moved for a second and would not move again. I unplugged the USB and tried again, same thing. I repeated that two more times.
So I don't know if I'm still getting corruption at 19200 that happens to always happen after about a second (seems unlikely), or if there's something wrong with how the Teensy handles 19200. I also noticed in serial mode that if I set the terminal to 19200 right from the start and connect to the Teensy, Teensy does not respond with "19200" and I can't send any commands. If I set the terminal to 38400 right from the start I get the "38400" response from Teensy, so it's handling it differently somehow.
Also, I was looking at the Linux source here
and found this function:
static int serialSetLinkSpeedIntuos(LocalDevicePtr local)
WacomCommonPtr common = ((WacomDevicePtr)(local->private))->common;
if ((common->wcmLinkSpeed == 38400) &&
(common->wcmVersion < 2.0F))
ErrorF("Wacom: 38400 speed not supported with this Intuos "
"firmware (%f)\n", common->wcmVersion);
ErrorF("Switching to 19200\n");
common->wcmLinkSpeed = 19200;
So apparently there are Intuos models with firmware < 2.0F that don't support 38400. Since my response to ~# is GD-1218-R00,V1.2-7 I'm guessing that means I have firmware 1.2-7. The next function shows that ProtocolV will also work at 19200:
static int serialSetLinkSpeedProtocol5(LocalDevicePtr local)
WacomDevicePtr priv = (WacomDevicePtr)local->private;
WacomCommonPtr common = priv->common;
DBG(1, priv->debugLevel, ErrorF("Switching serial link to %d\n",
/* set init string according to speed */
speed_init_string = (common->wcmLinkSpeed == 38400) ?
WC_V_38400 : WC_V_19200;
/* Switch the tablet to the requested speed */
err = xf86WcmWrite(local->fd, speed_init_string,
if (err == -1)
ErrorF("Wacom xf86WcmWrite error : %s\n", strerror(errno));
/* Wait 75 mSecs */
/* Set speed of serial link to requested speed */
if (xf86WcmSetSerialSpeed(local->fd, common->wcmLinkSpeed) < 0)