LibreScribe Progress Update

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.

7 Responses to LibreScribe Progress Update

  1. Aldi says:

    Like or Dislike: Thumb up 0 Thumb down 0

    Dear Dylan, thanks a lot for your continuing effort on LibreScribe! It is a great project.

  2. Gerry says:

    Like or Dislike: Thumb up 0 Thumb down 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.

  3. Stephan Gromer says:

    Like or Dislike: Thumb up 0 Thumb down 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?

    • Dylan Taylor says:

      Like or Dislike: Thumb up 0 Thumb down 0

      Try again with the latest version.

      • Stephan Gromer says:

        Like or Dislike: Thumb up 0 Thumb down 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?

        • Dylan Taylor says:

          Like or Dislike: Thumb up 0 Thumb down 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.

        • Dylan Taylor says:

          Like or Dislike: Thumb up 0 Thumb down 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>