Trouble Shooting
There are a number of things that can go wrong when trying to get iguanaIR and LIRC going. Well, this page will hopefully explain what you can do about most of them. It's been suggested that I make a flow chart out of this, but for the moment I'll stick to an ugly listing.
igdaemon Errors
Problem 1
Output from igdaemon contains:
ERROR: No response from device. ERROR: Failed to get id.
Explanation: This isn't actually a problem. When the daemon starts communicating with a device it attempts to read the id so that it can set up a symlink and allow communication under a user-defined name. When we ship our devices they do not have ids and so will only come up as numbered. If you have more than one you might find it useful to set ids for each device.
Solution: igclient --set-id hello
Problem 2
Output from igdaemon contains:
ERROR: failed to bind server socket: No such file or directory INFO: Worker 0 exiting
Explanation: Most likely the directory /dev/iguanaIR does not exist. It should be create by udev at start time by copying /lib/udev/devices/iguanaIR, however, I've seen problems for people using udev 071 and earlier. If anyone can tell me when and what changed to make it work for later versions of udev, but not for earlier, let me know. Depending on your log level (number of -v's passed to igdaemon) you may not see the INFO line.
Solution: For now you can add a line to the init script (usually located at /etc/init.d/iguanaIR) to create the directory and set its permissions (rw for user and group, owned by iguanair).
Problem 3
Output from igdaemon contains:
ERROR: failed to bind server socket: Permission denied INFO: Worker 0 exiting
Explanation: The daemon is correctly running as iguanair, or at least a non-privileged user, and does not have permission to create sockets in /dev/iguanaIR.
Solution: Check the permissions on the /dev/iguanaIR directory, and see the previous solution.
Problem 4
Output from igdaemon contains:
ERROR: updateDeviceList failed: usb_claim_interface failed 0: could not claim interface 0: Operation not permitted ERROR: scan failed.
Explanation: The daemon is correctly running as iguanair, or at least a non-privileged user, and does not have permission to claim the USB device interface. Currently this appears for people using udev 071 or older, and the cause appears to be that the provided iguanaIR.rules file does not properly set the device ownership.
Solution: Until someone afflicted with this problem comes up with a solution my suggestion is to run the igdaemon as root to avoid this permission problem. To do this you'll need to modify the init script. For example, change:
START="daemon --user=iguanair $IGPATH $IGUANAIR_OPTIONS -l $LOGFILE"
to
START="daemon --user=root $IGPATH $IGUANAIR_OPTIONS -l $LOGFILE"
No this is not a good solution, however, without an afflicted machine I can't debug it, and so far other people have just switched to running the daemon as root.
irsend Errors
For the discussion of these errors I'll refer to the name of the remote as panasonic and the button as power. These are my values, however, you should use values specific to your lircd.conf.
Problem 1
Running irsend twice fails on the second one:
[jdunn@porkrind ~]$ irsend send_once panasonic power [jdunn@porkrind ~]$ irsend send_once panasonic power irsend: could not connect to socket irsend: Connection refused
Explanation: Most likely the lircd daemon died for some reason.
Solution: Run the lircd on a console (lircd -n) and see what's happening.
Problem 2
Running irsend fails with:
[jdunn@porkrind ~]$ irsend send_once panasonic power irsend: timeout
Explanation: lircd most likely failed to send the command.
Solution: Run the lircd on a console (lircd -n) and see what's happening.
lircd Errors
Problem 1
lircd output contains:
lircd: error processing command: send_once apple.conf menu lircd: transmission failed
Explanation: On Debian based distros, the problem is mainly due to a not installed libusb-1.0-0 (<= Lenny on Debian). See the resolved ticket #161 for more details. If the solution below does not work, this is maybe my fault, but I'm not sure why yet. It appears to be a bug in the igdaemon, i.e. this is why it's called beta.
Solution: On Debian Lenny and older, add the backports repository to your sources.list and install libusb-1.0-0:
sudo aptitude install libusb-1.0-0
and restart the igdaemon service:
sudo invoke-rc.d iguanaIR restart
That's it!
The solution differs from each distros, but the goal is to install a recent libusb (typically libusb-1.0-0).
If the problem persist and you can reproduce this problem on demand please contact me (tickets or emails welcome).
Problem 2
lircd output contains:
lircd-0.8.1-CVS[24495]: couldn't open connection to iguanaIR daemon: No such file or directory lircd-0.8.1-CVS[24495]: caught signal
Explanation: The lircd daemon is failing to connect to the igdaemon through a client socket. These sockets should be located in /dev/iguanaIR.
Solution: Make sure the igdaemon is running. If it's failing to start, run it on a terminal with -n -v -v -v and see what the output looks like. This same error occurs when the iguanaIR device is not plugged in.
Miscellaneous
Why does irw show multiple lines when I only press the button once?
This is actually correct behavior. Most ir devices send many copies of the same signal and the receiving device must decide how many actions to actually execute. See the lirc page for a short discussion, under irw.
Why doesn't "/etc/init.d/iguanaIR start" do anything?
Most likely because either you have an old iguanair daemon running, or at least the init script thinks you do. Try a restart instead of a start.
