Novacom for Fedora

Novacom is a utility that allows you to connect to a WebOS device via it’s USB cable. It’s used by the WebOS Quick Installer and can also give you direct terminal access to the device’s OS. In many ways it’s is comparable to using adb with Android devices.

The one major technical problem novacom has had is that it only worked with libusb-0.x and did not work with libusb-compat. This meant that, to use novacom on Fedora 15+, you had to download Fedora 14’s libusb and do some funky library overrides. Since novacom was closed-source, there was no way for us to actually fix the problem.

Last week, HP open sourced novacom, and yesterday, I started looking into package novacom for Fedora. It turns out that the novacom daemon was using libusb to initialize the USB device, but was doing the actual reading and writing using a home-grown implementation. This implementation depended on some private information from libusb that, oddly enough, was completely different (and, as far as I could see, completely unavailable) in libusb-compat.

I wrote a patch to change novacom so it used the stock libusb read and write functions, and it now works perfectly with both the old libusb and the new libusb-compat. Yay!

I’ve created bugs 809114 and 809116 for the package reviews, and I’ve already got someone to review them (Thanks Mohamed!).

So, in the not so distant future, installing novacom on Fedora should be as easy as “yum install novacom”.


Comments

Brig C. McCoy
Monday, Apr 2, 2012

Good news for those of us using WebOS phones. Thanks.

eischmann
Tuesday, Apr 3, 2012

Great work! Although I got it working on F16 with F14’s libusb I know a few people who didn’t. It will be appreciated!

lyonel
Wednesday, Apr 4, 2012

You may want to add a systemd unit file for novacomd (/lib/systemd/system/novacomd.service):

[Unit] Description=Novacom daemon for WebOS devices After=syslog.target

[Service] Type=simple ExecStart=/usr/bin/novacomd

[Install] WantedBy=multi-user.target

You can then use: $ service novacomd enable $ service novacomd start $ service novacomd stop

etc.