Luckily there is no kernel module involved in driving the IR hardware. Instead the IR chip is a black box that is controlled via an internal serial port interface. The QuicksetSDK.apk package includes the code to control the IR chip. It creates a Service that the LGQRemote.apk app binds to to send commands to the IR hardware.
This will only work on rooted devices.
To get this working you'll need to install two APKs:
You'll also need to add a script that runs on device boot.
You can download mine here: 10QuickRemote
Or just make one yourself, containing this code:
#!/system/bin/sh chmod 666 /dev/ttyHSL1 setprop persist.sys.lge.eula_agreement true
I'm not 100% sure how the init.d system works on other AOSP roms, but on Cyanogenmod, you can place this script in the /data/local/userinit.d directory (creating the userinit.d directory if necessary). The script should not have an extension, and should be executable.
A quick method that works on CM, assuming you've downloaded my 10QuickRemote script to your current directory:
adb root adb shell "mkdir -p /data/local/userinit.d" adb push 10QuickRemote /data/local/userinit.d adb shell "chmod 755 /data/local/userinit.d/10QuickRemote
After a reboot, you should be able to use the QuickRemote app just like on the stock ROM!
If the app crashes right away, or if it launches but won't send any IR commands or learn new ones, your start-up script probably isn't being executed properly. Try running it manually and see if things work:
adb shell --- inside adb, as root: # sh /data/local/userinit.d/10QuickRemote # ls -l /dev/ttyHSL1 -- result should be: crw-rw-rw- system system 245, 1 2013-11-06 08:20 ttyHSL1 # getprop persist.sys.lge.eula_agreement -- result should be: true
-- inside a root shell # chmod 755 /data/local/userinit.d/10QuickRemote
If everything looks correct and it still won't work, send me a logcat and I'll try to figure it out.