LibreScribe Progress Update
May 21, 2011 7 Comments
Since my last post, I have made a lot of progress with LibreScribe. Just a few commits ago, LibreScribe gained the ability to retrieve a list of installed applications on the device, and add them to the list in the applications tab. I also fixed several other significant issues, including:
- When the smartpen is connected/disconnected, the application no longer crashes, and the status is automatically refreshed
- Device storage usage is now displayed in MiB instead of in bytes. This makes it a lot less confusing how much space is remaining on your smartpen.
- A bug, where the Echo Smartpen was detected as an “unknown LiveScribe Smartpen” in certain cases was fixed.
- All absolute paths have been removed from the project. All resources are now referenced using relative paths.
- wxFormBuilder has been replaced with wxSmith. The entire user interface has been recreated from scratch (although it’s very similar to the old interface, intentionally)
- Many C++ source and header files are no longer necessary, so they have been removed, and merged into other files. This makes the codebase a lot more maintainable.
- Duplicate udev events (such as multiple add events of the same device) are ignored now. Previously, we ended up refreshing the device information up to four times in a row because of duplicate events. This significantly reduces the delay between plugging in a device and seeing a response on the screen.
There are still tons of issues that still need to be fixed before LibreScribe becomes usable in a production environment, but I’ve been steadily making progress, and I hope to have something useful out soon.




Like or Dislike:
0
0
Dear Dylan, thanks a lot for your continuing effort on LibreScribe! It is a great project.
Like or Dislike:
0
0
Hi Dylan, thanks for your LibreScribe project! Do you have plans to continue the project? It would be great to use the LiveScribe pens in Linux. Thanks so much, Gerry.
Like or Dislike:
0
0
Hey!
Thank you for your efforts to get this very usefull gadget working under Linux.
Unfortunately I wasn’t successful using my Echo 8 MB
Maybe this information will help you to include it?
[ 9136.153797] usb 2-1.4: new high speed USB device using ehci_hcd and address 7
[ 9136.268048] input: Livescribe Echo(TM) Smartpen as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/input/input9
[ 9136.268242] generic-usb 0003:1CFB:1032.0006: input,hidraw5: USB HID v1.11 Mouse [Livescribe Echo(TM) Smartpen] on usb-0000:00:1d.0-1.4/input0
sgromer@MasterMerlinux ~/LibreScribe/bin/Release $ sudo lsusb
Bus 002 Device 007: ID 1cfb:1032
Anything else you may need?
Like or Dislike:
0
0
Try again with the latest version.
Like or Dislike:
0
0
I followed the “howto” on https://github.com/aliendude5300/LibreScribe/wiki
after the git command I just issued “make” and then went to the ~/bin directory and started LibreScribe
It didn’t work so I started the Debug-Version:
~/LibreScribe/bin/Debug $ ./LibreScribe
LibreScribe Alpha version 0.04, written by Dylan Taylor
Searching for your Smartpen… Starting background monitor…
entering findSmartpen()
exiting findSmartpen() returning NULL
Sorry! No compatible smartpen device found!
can’t retrieve changelist. no device_handle set. perhaps a device isn’t connected?
Parsing audio list…
(Now I added the Echo 8MB)
udev device action detected: add; refreshing device state…
Searching for your Smartpen…
entering findSmartpen()
exiting findSmartpen() returning device
LiveScribe Echo(TM) Smartpen Detected!
assigning device_handle.
No such device
device_handle assignment failure.
can’t retrieve changelist. no device_handle set. perhaps a device isn’t connected?
Parsing audio list…
Done refreshing device state.
This is what udevadm monitor tells me:
KERNEL[1315173011.066312] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4 (usb)
KERNEL[1315173011.066978] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0 (usb)
KERNEL[1315173011.067017] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/0003:1CFB:1032.0008 (hid)
KERNEL[1315173011.068839] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/input/input11 (input)
KERNEL[1315173011.068865] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/input/input11/mouse3 (input)
KERNEL[1315173011.068881] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/input/input11/event9 (input)
KERNEL[1315173011.068896] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/0003:1CFB:1032.0008/hidraw/hidraw5 (hidraw)
KERNEL[1315173011.069016] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.1 (usb)
KERNEL[1315173011.069044] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.2 (usb)
KERNEL[1315173011.069063] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.3 (usb)
UDEV [1315173011.070080] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4 (usb)
UDEV [1315173011.071611] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0 (usb)
UDEV [1315173011.072430] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/0003:1CFB:1032.0008 (hid)
UDEV [1315173011.072935] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.2 (usb)
UDEV [1315173011.072975] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.1 (usb)
UDEV [1315173011.073264] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/0003:1CFB:1032.0008/hidraw/hidraw5 (hidraw)
UDEV [1315173011.074208] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.3 (usb)
UDEV [1315173011.074478] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/input/input11 (input)
UDEV [1315173011.079807] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/input/input11/mouse3 (input)
UDEV [1315173011.080040] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/input/input11/event9 (input)
Am I doing something wrong?
Like or Dislike:
0
0
It should be working. Unfortunately I have a Pulse smartpen, and I’d rather not spend $100 on an Echo smartpen right now. I did notice that you plugged the pen in after the application started, instead of before starting it. That’s perfectly fine. It literally doesn’t make a difference at all. It should still be able to detect and use the smartpen either way. I want to make LibreScribe work with all LiveScribe devices, but without access to an Echo smartpen, it’s significantly harder to do, unfortunately. I’d assume that the two versions are more or less the same except for the physical form of the product, and the device’s storage capacity. I’ll keep trying to get the Echo pens to work.
Like or Dislike:
0
0
I just looked into it, although I probably can’t fix it right now, I’m 99.9% sure that the problem is in the smartpen_connect function in src/Smartpen.cpp, which starts on line 135 (in the latest commit). The function is returning a null value, even though the device seems to be present (the code in doRefreshDeviceState in GUIFrame.cpp is _clearly_ detecting it, since your output says “LiveScribe Echo(TM) Smartpen Detected!”). There are several ways this can happen, but I’ll have to look into the matter further to determine why.