summaryrefslogtreecommitdiff
path: root/src/SW/usb-ir-toy-lirc/document.en.rest.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/SW/usb-ir-toy-lirc/document.en.rest.txt')
-rw-r--r--src/SW/usb-ir-toy-lirc/document.en.rest.txt108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/SW/usb-ir-toy-lirc/document.en.rest.txt b/src/SW/usb-ir-toy-lirc/document.en.rest.txt
new file mode 100644
index 0000000..9f7169e
--- /dev/null
+++ b/src/SW/usb-ir-toy-lirc/document.en.rest.txt
@@ -0,0 +1,108 @@
+==============================
+Using the USB IR Toy with LIRC
+==============================
+:CreationDate: 2012-10-08 10:49:07
+:Id: SW/usb-ir-toy-lirc
+:tags: - software
+ - configs
+
+So I got myself a `programmable remote control in the shape of Eleven's
+sonic screwdriver <http://thewandcompany.com/sonic/>`_ (sorry,
+horrible in-accessible website). Of course I want to control my PC
+with it!
+
+To do that, I needed a IR receiver and `LIRC
+<http://www.lirc.org/>`_. Since I sometimes like being overly generic,
+I bought `Dangerous Prototypes <http://dangerousprototypes.com/>`_
+`USB Infrared Toy
+<http://dangerousprototypes.com/docs/USB_Infrared_Toy>`_, which allows
+me to send & receive any kind of IR pulse stream.
+
+Getting the three pieces (remote, toy, LIRC) to play together was more
+effort than I'd really liked, so here's what I did, to help everybody
+else.
+
+Flash a newer firmware
+======================
+
+Your IR Toy is probably running an old version of the firmware. If
+you're running Windows, the `instructions provided
+<http://dangerousprototypes.com/docs/USB_IR_Toy_firmware_update>`_ may
+work; otherwise, you have to dig deeper. The source code for the
+``fw_update`` program that you can get from those pages (or from `the
+Subversion repository
+<http://dangerous-prototypes-open-hardware.googlecode.com/svn/trunk/Bootloaders/USB-HID-Diolan/18F24J50/fw_update/>`_)
+does not even compile (it "forgets" to include half the header files
+it needs), and when you get it to compile it segfaults. User
+"JessH" of the Dangerous Prototypes forums `posted a working version
+<http://dangerousprototypes.com/forum/viewtopic.php?t=3697&p=37398#p37371>`_
+(`here's the patch <JessH.patch>`_ if you want to see it, it should
+apply to the SVN version).
+
+.. note::
+
+ Yes, I know I'm pointing at the updater source for the 18F24J50, but
+ the chip on the actual IR Toy says "18F2550". What can I say, it
+ works!
+
+Having compiled it, I was able to update the firmware to version 22::
+
+ $ echo '$' > /dev/ttyACM0
+ $ ./fw_update -e -w -v -m all -vid 0x04D8 -pid 0xFD0B \
+ -ix ~/src/dangerous-prototypes-open-hardware/USB_IR_Toy/package/firmware/USBIRToy.v22.hex
+
+Unplug, re-plug, and we're set.
+
+Patching LIRC
+=============
+
+LIRC can use the IR Toy in ``irman`` compatibility mode, but I needed
+full send capability, to program the sonic screwdriver. I found `a
+patch to add full support
+<http://sourceforge.net/mailarchive/forum.php?thread_name=4ebf97df-17f8-48bb-ba65-32e4b9983ac4%40devleno&forum_name=lirc-list>`_,
+thanks to Peter Kooiman. If you're running Gentoo, you can add `my
+overlay <http://www.thenautilus.net/cgit/gentoo-overlay/>`_ and
+install `my patched LIRC
+<http://www.thenautilus.net/cgit/gentoo-overlay/tree/app-misc/lirc/>`_.
+
+Configuring LIRC
+================
+
+This may well be written down somewhere, but I had problems finding a
+useful guide, so I'll just show what I did:
+
+1) get a full Philips RC-5 code list from `the LIRC remotes repository
+ <http://lirc.sourceforge.net/remotes/rc-5/>`_
+
+2) assign, arbitrarily, the first 39 codes to the 13 gestures on 3
+ memory banks of the screwdriver::
+
+ begin remote
+ name sonic
+ # snip
+ begin codes
+ b1_tap_top 0x1000
+ b1_tap_left 0x1001
+ #etc etc
+
+Programming the remote
+======================
+
+I wrote `a simple Perl program to send the IR codes <send>`_. Run it
+with ``lircd`` running and ``irsend`` in your path. When it say
+``Ready to send $something``, press "enter" to send it, ``a`` to go
+back to the previous code (useful if the screwdriver didn't get it),
+``n`` to go the next code without sending anything.
+
+I put the screwdriver in programming mode, performed all 39 gestures
+one after the other, and programmed all of them. LIRC now uses
+sensible names for the 39 gestures.
+
+Using it
+========
+
+Finally, I re-compiled `vlc <http://www.videolan.org/>`_ with LIRC
+support, and wrote `a |lircrc| for vlc <lircrc>`_. With that, I can
+control ``vlc`` with my sonic screwdriver!
+
+.. |lircrc| replace:: ``~/.lircrc``