Menu

#44 Problems with BWCT usb devices (lcdproc-0.5.6)

minor
open
nobody
None
5
2014-08-17
2013-06-02
mrjerk
No

I had some problems when using the USB displays from Bernd Walter Consulting (http://www.bwct.de/lcd.html). When starting LCDd as root, the Log says something like

Jun  2 12:53:42 raspbmc LCDd: hd_init_bwct_usb: interface may be claimed by kernel driver, attempting to detach it
Jun  2 12:53:42 raspbmc LCDd: hd_init_bwct_usb: unable to re-claim interface: No route to host
Jun  2 12:53:42 raspbmc LCDd: Driver [hd44780] init failed, return code -1
Jun  2 12:53:42 raspbmc LCDd: Could not load driver hd44780

(see also my forum post at https://sourceforge.net/p/lcdproc/discussion/312/thread/672cd88a/)

I found out that this is caused by the libusb call "usb_claim_interface" (http://libusb.sourceforge.net/doc/function.usbclaiminterface.html) in "server/drivers/hd44780-bwct-usb.c", which returns -2 and therefore stops initialisation.
lcdproc-0.5.6 and lcdproc-0.5.5 seem to be affected (maybe older versions too, havent't tested that). I encountered the problems with ARM (Raspberry pi) and i386 architecture.

If I remove all checks like

if (usb_claim_interface(p->usbHandle, p->usbIndex) < 0) {...}

from hd44780-bwct-usb.c and recompile lcdproc, the display works just fine (although LCDProc has to be run as root, otherwise the initialisation fails with "hd44780: timing_init() failed (Operation not permitted)")

I do not know if this is an lcdproc- or libusb-related issue, maybe it's also a problem with the device itself. As far as I know, the BWCT usb devices are used not very often, so I marked this bug as minor.

Best regards,
Joerg

Discussion

  • Markus Dolze

    Markus Dolze - 2013-06-05

    What OS are you using?

    I had a look at some other drivers that use "usb_claim_interface" and all but one abort initialization if that fails.

    I checked with a lcd2usb device on my Pi (running an older version of Wheezy) and with libusb-0.1 installed. The lcd2usb device does not use "usb_claim_interface", so I programmed that in and it does still work.

    The error message "No route to host" is strange, but it may be because libusb is mapping some error codes.

    I have no idea what all the configurations and alternate settings are for. I suggest you contact the original author about this: Bernd Walter bernd@bwct.de.

     
  • mrjerk

    mrjerk - 2013-06-05

    Thank you for your reply.
    I use the Raspbmc wheezy distribution for my Pi. I have the problem with the lcdproc version that comes along with wheezy and with the 0.5.6 version (which is built against libusb-1 as far as I know?)

    I encountered similar problems on my desktop PC, which is a Xubuntu 12.10 (64Bit).

    I found out that the Client Software of Bernd Walter that can be downloaded from his homepage (http://www.bwct.de/lcd.html) and that I used to get the display running in the past, has the same problem - it checks not for the return value of "usb_claim_interface", and that's why it is working, although usb_claim_interface fails:

    lcd = usb_open(dev);
    usb_claim_interface(lcd, i);
    

    But if I extend this like this

    lcd = usb_open(dev);
    int claimResult = usb_claim_interface(lcd, i);
    printf("Claim Result: %d\n", claimResult);
    

    I get a "Claim Result: -2" in the output every time the call is made. Nevertheless the LCD works fine.

    Maybe this is a hardware issue - I have two LCDs from Bernd Walter, both have the same problem.

    Anyway, by simply ignoring the error in the driver, the display works pefectly now with LCDProc (what a great piece of software, by the way! Thanks for sharing!) - but I will contact Bernd Walter, perhaps he has an idea for this.

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.