Boogie Board RIP & Linux, first steps

I quickly tested the new Boogie Board RIP tonight. It seems promising, though there’s some rough edges.

For those who aren’t really into hi-tech toys, this is a mix between Etch-a-Sketch and a computer. You can draw on it as you want, and then save your page as a vectorized PDF. Saved pages are able to be retrieved through a standard USB Mass Storage.

Windows users are, as usual, in for a treat : they have access to a dedicated application that allows them to interact with the computer in real time. As the board is plugged in, drawings will appear directly on the computer screen. Sadly – but some might have anticipated this – there’s no such thing for us Linux users.

So, it’s worth what it’s worth, but here are my first findings on that subject. The device appears as an USB Mass Storage, but also as an HID. Here are my dmesg output after plugging the board in:

usb 3-1: new full speed USB device using uhci_hcd and address 8
scsi14 : usb-storage 3-1:1.0
generic-usb 0003:2047:FFE7.000A: timeout initializing reports
generic-usb 0003:2047:FFE7.000A: hiddev0,hidraw3: USB HID v1.00 Device [Improv USB Device] on usb-0000:00:1a.0-1/input1
scsi 14:0:0:0: Direct-Access Improv Boogie Board Rip 0.60 PQ: 0 ANSI: 4
sd 14:0:0:0: Attached scsi generic sg8 type 0

As I’m a perfect newbie in HID things, and since my Internet access doesn’t allow me to installed big pieces of software – though I’m pretty sure a lot of USB debugging tools exist out there – I tried to understand that hidraw3 by myself.

I did it using ‘cat /dev/hidraw3 | hexdump -C’. I had to run it as root, but it looks like it’s normal (hidrawX devices aren’t world-readable, for some reason).

What I got is a bunch of bytes. Almost all events (touching, moving, button pressing, etc.) appears as follows :

1b 0e 01 20 28 00 c0 1b 00 00 00 00 00 00 00 4d
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Some events (erasing) are a little more verbose, but that’s all.

  • Bytes 0 to 2 never change.
  • Bytes 15 to 31 are always zero’ed.
  • Byte 3 takes three different values :
    • 00 when the pen is far from the screen
    • 20 when the pen is almost against the screen (some  events are recorded without contact)
    • 21 when the pen touches the screen
  • Byte 5 refer to Y coordinate, being 00 when touching the upmost border, 4d when all the way down.
  • Byte 7 refer to X coordinate, 01 (sometimes 00) is full right, 36 is full left. I suspect coordinates are actually two-bytes (that would be little-endian, with bytes 4-5 for Y and 6-7 for X).
  • Byte 8 seems to be related to the « Status » LED. It is 00 when off, and ff when lit.
  • Byte 10 is usually 00, but turns into 02 when we press Save/Wake, and 04 when we press Erase.
  • Byte 11 writes 04 when Status in on, 00 else.
  • Byte 15 is the weirder. It looks like it’s counting something, but I can’t get what. It changes almost every event.

For now, this is all I can get. I’m sure it could be used somehow. For now, I’m more interested in actually using the BBR. If I could understand what kind of gestures gives us « ghost » lines, I’d be happy. Anyway, it has the potential to be a pretty good tool for sketching and taking small notes. At least when it makes sense to use on computer afterward, since there is no mechanism to recall a saved page on screen.

I really hope there’s some firmware update planned.

Comments are disabled for this post