#247 Intuos2 that stopped communicating tool serial Id after an update

closed-duplicate
nobody
None
2015-12-04
2014-07-04
No

There is some bug in the USB stack of Ubuntu (or the linux kernel) that makes so that Intuos and Intuos2 tablets may, all of a sudden, stop working after an update.

Case in point, I've been forced back to use Windows again, and I can't afford to replace the tablet with a newer one. Not when it also mean rebuild the 22" DIY Cintiq I built on top of it.

It is unclear what happens, but essentially MSC_SERIAL appears to have constantly value 0, even when all other events contains valid values.

Also, I don't think it is an hardware issue, as the problem manifested after some months of perfect work, on a boot after an update, I involves every drawing tool I have (two grip pens, one "eraser", and a mouse. All worked perfectly) and the tablet has no problems in Windows.

The xorg log files contains plenty of "usbParse: Ignoring event from invalid serial 0" messages, so I deduced the problems is that the tool serial is somehow lost.

Using xsetwacom BindToSerial does not appear to make any difference, as the first two series intuos serial numbers were hardwritten in the hardware of the single tools.

A common, quick and nasty fix done "on the field" is to replace, in usbParseSynEvent ( in wcmUSB.c ), this code

if ((event->type == EV_MSC) && (event->code == MSC_SERIAL))
{
    /* we don't report serial numbers for some tools
     * but we never report a serial number with a value of 0 */
    if (event->value == 0)
    {

        LogMessageVerbSigSafe(X_ERROR, 0,
         "%s: usbParse: Ignoring event from invalid serial 0\n",
                      pInfo->name);
        goto skipEvent;

    }

    /* save the serial number so we can look up the channel number later */
    private->wcmLastToolSerial = event->value;

    return;
}

with something like this:

if ((event->type == EV_MSC) && (event->code == MSC_SERIAL))
{
    if (event->value == 0)
    {
        DBG(3, common, "Invalid serial number 0 replaced with 1\n");

                    // 0 is a serial number either produced by out-of-prox events
                    // or some bug in the USB stack that affects Intos 1 & 2
                    if (private->wcmLastToolSerial==0 )
                        private->wcmLastToolSerial= 1;
                    else if (private->wcmLastToolSerial != 1 )
                    {           
            /* Essentially, if one of the tools managed to 
               send one serial number this means this is not 
               a case of defective Intuos2 /stack
               so it is correct to assume something more specific
               has happened
            */
                        LogMessageVerbSigSafe(X_ERROR, 0,
                      "%s: usbParse: Ignoring event from invalid serial 0\n",
                      pInfo->name);
            goto skipEvent;

            }

                    return;

    }

    /* save the serial number so we can look up the channel number later */
    private->wcmLastToolSerial = event->value;

    return;

}

-

I am having trouble convincing the 0.25.0 driver to build on my system ( /.configure tells me that the package xinerama is missing, even if x11proto-xinerama-dev is installed, after I followed the instructions in the BambooPT howto), so I can't guarantee it works.

But I've seen that "hardwiring" the serial number cited as a way to solve the issue, as long as you didn't want to use two tools of the same type with different settings (which is quite rare, really... not at 100$ for a grip pen).

By the way, a more comprehensive solution would be to allow to switch off the serial tool recognition altogether for those systems where serial ID does not work (I suppose that discarding serial tool value 0 is needed to avoid such bogus value to "erase" the real wcmLastToolSerial, as it is probably given by out-of-proximity events; unfortunately, it really "breaks down" all on my machine) by having an xsetwacom --UseSerialRecognition on/off switch.

I hope someone will move around to fix this, because the linux driver was way better than the Windows 7, apart the latter "funny" interface.

And now, I'll have to switch off to Windows till that day.

Related

Bugs: #247

Discussion

  • Jason Gerecke
    Jason Gerecke
    2014-07-07

    Could you let us know the version of Ubuntu you were running before/after the update? Bug #207 is basically the same thing: the Intuos and Intuos2 USB tablets suddenly stopped reporting serial numbers (only when hotplugged IIRC) sometime between Ubuntu 10.10 and 11.10. Are you now seeing that the serials are not reported even if the tablet is plugged in before boot?

    The last I looked in to this bug, I wasn't able to find anything that would explain the behavior. It almost seems like a race between the driver and tablet is being triggered...

     
    • I did not do an Update of Ubuntu, but rather it was an automatic update
      of some components (I didn't really looked what).

      Right now, I am using Ubuntu 13.10 (I resisted updating to Ubuntu 14.04
      for fear of losing the tablet) with a kernel 3.11.0-24-generic

      I tried to see if the tablet works with past versions of Ubuntu, but it
      appears that it does not.

      So, it is probably a tablet problem, with the tablet that "loses" the
      ability to retrieve and communicate the serial number of the tool.

      However, the fact that the driver fails completely when the tablet can't
      manage to send a valid serial ID seems to be a reasonably choice, but
      ultimately result in me having to ditch either the tablet or Linux.
      I literally can't afford to ditch the tablet, so linux it is.

      On the other hand, the serial number is only needed when you have two
      tools of the same type, and you want to program them differently. That
      is not necessarily a common situation.

      While I may have two grip pens, I never used - nor expected to use -
      more than one.

      /The other is a backup, kept in its box, for when I will break the first
      - everybody breaks a Wacom pen at the right precise moment he can't
      afford to, it is an unwritten corollary of Murphy's Laws.//
      //(It's also a corollary that, when you have already spent to buy a
      back-up, no amount of falls will break the principal until you have a
      moment of foolishness, and give the backup to a friend in need)/

      As such, I feel that the driver should "survive" the loss of the serial
      number, the way the windows driver manages to survive it pretty well.

      I checked on the windows driver what serial numbers does it, indeed,
      see, and the answer is pretty enlightening.

      It says that every tool I have has serial number 0x00000001.

      Which is exactly what would be seen if the window driver had a failsafe
      patch of the kind I proposed.

      If it is the case, it is possible that it is a common issue of the first
      two series of Intuos
      (I need to look for an old Windows driver, they used to have a
      "recalbrate to factory specs" button that newer lost - probably because
      the failsafe made it superfluous, that apparently did make a tablet
      reset... ).

      Anyway, thanks for the time you invested in the linux driver.

      It is pretty awesome.

      Cristiano.

      Il 07/07/14 20:50, Jason Gerecke ha scritto:

      Could you let us know the version of Ubuntu you were running
      before/after the update? Bug #207 is basically the same thing: the
      Intuos and Intuos2 USB tablets suddenly stopped reporting serial
      numbers (only when hotplugged IIRC) sometime between Ubuntu 10.10 and
      11.10. Are you now seeing that the serials are not reported even if
      the tablet is plugged in before boot?

      The last I looked in to this bug, I wasn't able to find anything that
      would explain the behavior. It almost seems like a race between the
      driver and tablet is being triggered...


      [bugs:#247] http://sourceforge.net/p/linuxwacom/bugs/247/ Intuos2
      that stopped communicating tool serial Id after an update

      Status: new
      Group: Production
      Created: Fri Jul 04, 2014 12:08 PM UTC by Cristiano Pruneri
      Last Updated: Fri Jul 04, 2014 12:08 PM UTC
      Owner: nobody

      There is some bug in the USB stack of Ubuntu (or the linux kernel)
      that makes so that Intuos and Intuos2 tablets may, all of a sudden,
      stop working after an update.

      Case in point, I've been forced back to use Windows again, and I can't
      afford to replace the tablet with a newer one. Not when it also mean
      rebuild the 22" DIY Cintiq I built on top of it.

      It is unclear what happens, but essentially MSC_SERIAL appears to have
      constantly value 0, even when all other events contains valid values.

      Also, I don't think it is an hardware issue, as the problem manifested
      after some months of perfect work, on a boot after an update, I
      involves every drawing tool I have (two grip pens, one "eraser", and a
      mouse. All worked perfectly) and the tablet has no problems in Windows.

      The xorg log files contains plenty of "usbParse: Ignoring event from
      invalid serial 0" messages, so I deduced the problems is that the tool
      serial is somehow lost.

      Using xsetwacom BindToSerial does not appear to make any difference,
      as the first two series intuos serial numbers were hardwritten in the
      hardware of the single tools.

      A common, quick and nasty fix done "on the field" is to replace, in
      usbParseSynEvent ( in wcmUSB.c ), this code

      if ((event->type == EV_MSC) && (event->code == MSC_SERIAL))
      {
      / we don't report serial numbers for some tools
      * but we never report a serial number with a value of 0
      /
      if (event->value == 0)
      {

           LogMessageVerbSigSafe(X_ERROR,  0,
            "%s: usbParse: Ignoring event from invalid serial 0\n",
                         pInfo->name);
           goto  skipEvent;
      
       }
      
       /* save the serial number so we can look up the channel number later */
       private->wcmLastToolSerial  =  event->value;
      
       return;
      

      }

      with something like this:

      if ((event->type == EV_MSC) && (event->code == MSC_SERIAL))
      {
      if (event->value == 0)
      {
      DBG(3, common, "Invalid serial number 0 replaced with 1\n");

                       // 0 is a serial number either produced by out-of-prox events
                       // or some bug in the USB stack that affects Intos 1 & 2
                       if  (private->wcmLastToolSerial==0  )
                           private->wcmLastToolSerial=  1;
                       else  if  (private->wcmLastToolSerial  !=  1  )
                       {            
               /* Essentially, if one of the tools managed to
                  send one serial number this means this is not
                  a case of defective Intuos2 /stack
                  so it is correct to assume something more specific
                  has happened
               */
                           LogMessageVerbSigSafe(X_ERROR,  0,
                         "%s: usbParse: Ignoring event from invalid serial 0\n",
                         pInfo->name);
               goto  skipEvent;
      
               }
      
                       return;
      
       }
      
       /* save the serial number so we can look up the channel number later */
       private->wcmLastToolSerial  =  event->value;
      
       return;
      

      }

      -

      I am having trouble convincing the 0.25.0 driver to build on my system
      ( /.configure tells me that the package xinerama is missing, even if
      x11proto-xinerama-dev is installed, after I followed the instructions
      in the BambooPT howto), so I can't guarantee it works.

      But I've seen that "hardwiring" the serial number cited as a way to
      solve the issue, as long as you didn't want to use two tools of the
      same type with different settings (which is quite rare, really... not
      at 100$ for a grip pen).

      By the way, a more comprehensive solution would be to allow to switch
      off the serial tool recognition altogether for those systems where
      serial ID does not work (I suppose that discarding serial tool value 0
      is needed to avoid such bogus value to "erase" the real
      wcmLastToolSerial, as it is probably given by out-of-proximity events;
      unfortunately, it really "breaks down" all on my machine) by having an
      xsetwacom --UseSerialRecognition on/off switch.

      I hope someone will move around to fix this, because the linux driver
      was way better than the Windows 7, apart the latter "funny" interface.

      And now, I'll have to switch off to Windows till that day.


      Sent from sourceforge.net because you indicated interest in
      https://sourceforge.net/p/linuxwacom/bugs/247/

      To unsubscribe from further messages, please visit
      https://sourceforge.net/auth/subscriptions/

       

      Related

      Bugs: #247

      Attachments
  • Jason Gerecke
    Jason Gerecke
    2014-12-06

    Closing as duplicate of [bugs:#207].

     

    Related

    Bugs: #207

  • Jason Gerecke
    Jason Gerecke
    2014-12-06

    • status: new --> closed-duplicate