LG simplink TV not working
Closed this issue · 70 comments
here is the console output from the rpi-cecd
logical_address: 0x4
physical_address: 0x1000
cec_callback: debug: reason=0x0001, len=0x04, retval=0x00, param1=0x0010824f, param2=0x00000000, param3=0x00000000, param4=0x00000000
cec_callback: unknown event: reason=0x0001, len=0x04, retval=0x00, param1=0x0010824f, param2=0x00000000, param3=0x00000000, param4=0x00000000
I understand LG has non-standard implementation of CEC. libcec does support simplink since version 1.3. Could you add simplink support?
This would be awesome :)
I don't have access to a LG TV set so it's hard for me to test it.
I managed to get atleast some keys working on my LG TV. Only 5 keys at the bottom of remote work (i.e play,pause,stop, back next) see http://tinypic.com/r/29mqako/6.
For my tv and remote the navigation keys up,down,left right and ok do not send any codes so cannot navigate the menus :(
People with LG tv could try to see if any more keys work for them.
code changes to cec.cpp @ http://pastebin.com/iCjrmEkt.
compiled binary @ http://www.multiupload.nl/ODYOYLOMJI
Good job!
I will merge your changes as soon as I have time over.
As for the navigation keys, do you get any events at all?
My guess is that those keypresses are sent with CEC_Opcode_VendorRemoteButtonDown.
Maybe changing the device type will do the trick?
Btw. how did you figure out the SimpLink vendor commands/constants, i.e. SL_COMMAND_REQUEST_POWER_STATUS?
I just had another quick look at your code. It might be a good idea to add a call to debug right before you return in HandleVendorCommand. Maybe the navkeys are sent ass a vendorcommand after all.
Maybe SL_COMMAND_UNKNOWN_01is SL_GET_CAPABILITIES
What happens if you set the response to 0xff 0xff?
I get no keys codes the keys don't come even as vendor commands.
I referred to libcec code to get the constants and repsonses expected by TV. The response for SL_Command_unknown is as per libcec but I notice I do not send a power transition from standby to ON. but donot think this might be the issue.
I use cec-o-matic (http://www.cec-o-matic.com/) also to decode the messages contained in the params.
I see that the pi always uses 4 as source address while sending messages which seems to be for a playback device.
Any idea how to change this address while using the vc_cec_send_message ? This could also be the reason for the tv not sending additional keys...
@ashwinkp
can you test with latest. I've tried to make the vendor probing more reliable, seems to work ok for me.
Do you get "Setting Vendor Id to LG"
Whats your vendor id?
The relevant header files are
interface/vmcs_host/vc_cec.h
interface/vmcs_host/vc_cecservice_defs.h
interface/vmcs_host/vc_cecservice.h
vc_cec_release_logical_address
and then
vc_cec_device_type
might do the trick
Physical Address: 0x1000
Logical Address: 0x4
Probing for TV vendor ID
...... done.
TV Vendor ID: 0xffff
cec_callback: debug: reason=0x0002, len=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: unknown event: reason=0x0002, len=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: debug: reason=0x0002, len=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8c, operand1=0x0, operand2=0x0
cec_callback: debug: reason=0x0002, len=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8f, operand1=0x0, operand2=0x0
cec_callback: received power status query
cec_callback: sent powerstatus on
cec_callback: debug: reason=0x0002, len=0x04, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x4, operand2=0x0
VendorCommand: unhandled vendor command operand1=0x4 for vendor=0xffff
cec_callback: debug: reason=0x0002, len=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: unknown event: reason=0x0002, len=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: debug: reason=0x0002, len=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x1, operand2=0x0
VendorCommand: unhandled vendor command operand1=0x1 for vendor=0xffff
cec_callback: debug: reason=0x0002, len=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x1, operand2=0x0
VendorCommand: unhandled vendor command operand1=0x1 for vendor=0xffff
cec_callback: debug: reason=0x0002, len=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: unknown event: reason=0x0002, len=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: debug: reason=0x0002, len=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x1, operand2=0x0
VendorCommand: unhandled vendor command operand1=0x1 for vendor=0xffff
@s7mx1
That's an invalid vendor ID. Try to start the program a few times. Do you always get the same number?
What's the exact model of your TV set?
If you always get the same vendor id, it might mean LG does not support the GetVendorId command.
If that's the case it's kind of a bummer squared. It means we have to resort to other quirks just to find out
what kind of special snowflake we're dealing with in the first place.
I am having LG 42ld450.
I always get that vendor ID. I ended up force it to set vendor ID to LG and after that I got the bottom 5 buttons working just like @ashwinkp. However with ashwinkp's program it always exit at "cec_callback: TODO HandleVendorCommandPowerOnStatus(command)"
Here is output from rpi-cecd: http://pastebin.com/GjRRBbCV
Ok, at least it says the same thing. We can pretend 0xffff is lg and hope other vendors don't ues that number.
commented out vc_cec_register_all and did run it again. Here is the out
http://db.tt/ts7qDHvv
@olajep : The changes work after running the program tv input also changes to the appropriate source. I tried changing the logical address by geting device type, releasing and requesting logical address there were some messages with reason 0x40 and 0x80 for which some action from pi might be required. will post log later.
@s7mx1: You should try removing the exit command and ideally respond with the following 2 messages
MSG1(transition from standby to ON): Cec_Opcode_ReportPowerStatus, 02
MSG2(power status ON): Cec_Opcode_ReportPowerStatus, 00
I will check the logs when I reach home and update the code to include these 2 messages in response to incoming command.
@ashwinkp work as in all buttons work or just play / pause / stop / forward / rewind ?
Ok maybe you can make the other keys work by setting replacing imageview with textview.
I removed all code and followed the steps referring to 2-3 logs for libcec posted online. Not sure what did the trick but Now I am getting keypress events for the navigation keys (left,right,up,down, select). Back button does not work seems that libcec also does not support back button will check thread on libcec l8r.
Since the code is makeshift I will do some clean up and post in the next few days.
Thats really good.
Can you also test latest and check if rpi-cecd reports the right vendor id now.
The new code detects my LG tv correctly:
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x1000
Logical Address: 0x4
Probing for TV vendor ID
............................. done.
TV Vendor ID: 0xe091
Setting Vendor Id to LG
I have a 42LD4500 and get this when running the build from yesterday
Physical Address: 0x3000
Logical Address: 0x4
Probing for TV vendor ID
.......... done.
TV Vendor ID: 0xffff
Setting Vendor Id to LG
cec_callback: debug: reason=0x0002, length=0x02, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: unknown event: reason=0x0002, length=0x02, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
VendorCommand_LG: Sent 0205
cec_callback: debug: reason=0x0002, length=0x02, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x8f, operand1=0x0, operand2=0x0
cec_callback: received power status query
cec_callback: sent powerstatus on
cec_callback: debug: reason=0x0002, length=0x03, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0xa0, operand2=0x0
VendorCommand_LG: TODO HandleVendorCommandPowerOnStatus(command)
cec_callback: debug: reason=0x0002, length=0x03, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0xa0, operand2=0x0
VendorCommand_LG: TODO HandleVendorCommandPowerOnStatus(command)
cec_callback: debug: reason=0x0002, length=0x02, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: unknown event: reason=0x0002, length=0x02, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x0, operand1=0x0, operand2=0x0
cec_callback: debug: reason=0x0002, length=0x02, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x8c, operand1=0x0, operand2=0x0
cec_callback: debug: reason=0x0002, length=0x03, retVal=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x1, operand2=0x0
VendorCommand_LG: SL_COMMAND_UNKNOWN_01 received
today's built should detect the vendor correctly.
downloaded the binary and pushed it to my RPi. The 5 buttons on the lower side work, but not the direction keys.
Is it still needed to enable the webinterface?
TV now gets detected as:
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x3000
Logical Address: 0x4
Probing for TV vendor ID
.......... done.
TV Vendor ID: 0xe091
Setting Vendor Id to LG
@ashwinkp
I took the liberty to merge your changes.
Do my master work for you or did I break something.
Was this merge supposed to make the direction keys work? If it was they are not working in my LG.
Changes to simulate Back and Home(Menu) keys using combination of two keys added on forked branch
Back = Stop + Select(OK)
Menu = Stop + Pause
Due to combo key handling stop key handling becomes delayed but should be ok looking at the increase in usability. :)
Note changed to all notification since in some runs the notifications were not getting detected having all on works most of the times.
binary => http://www.multiupload.nl/C96YZWS16M
I think I can now use CEC to control xbmc on pi with my LG TV.
Cheers
@guisacouto Yes, that was the plan.
Did you try to select the RPi in the Simplink menu
With your binary I get the 4 navigation buttons, ok button, back and exit plus the original bottom 5 button working. Can I remap one of the back or exit button since they are almost doing the same thing at the moment.
Is it possible to get the subtitle key working?
@s7mx1
Same question as to aswinkp:
Do my master work for you or did I break something?
Your master not working, i.e. no navigation buttons but it now power on my tv when I start it up. Do you need the output log ?
@olajep
I compiled it and in my simplink menu it only shows the "Disc Play".. with this selected it works as before: stop,play,pause,etc.. but no navigation buttons.
@s7mx1 if the buttons on remote for back and exit work for you then you are lucky. You could either remap one of those for subtitle or have a look at combo key handling added for my tv where I do not get these keys so I an using two combinations. You could remap working keys or change code to map those to any key of your choice.
@olajep your changes should be fine but in some cases I did not receive the nav keys in such cases just turning all notifications ON worked
@guisacouto can you try the binary from the link posted above or code from the fork? might be related to all notifications being turned ON.
The binary is working just fine;)
The exit button seems to be doing the same as the back button. The exit could be a good replacement for the Home button, normally present in the mceusb remotes. This key brings you automatically to main menu.. this is kind of usefull since xbmc with dirtyregions in the main menu uses < 30%, but in other menus it uses >80%. I normally leave my raspi on all the time, so it's nice to leave it with the cpu ~idle
Can someone mirror ashwinkp's latest binary? I would like to try it with my LG 32LV3400 and contribute debugging if needed... but it keeps redirecting me away from a download (LNX.lu to a exe for iLiVid... but my Fedora based system can't run .exe)
@cybertimber2009 you can also get the binary from https://github.com/ashwinkp/rpi-cecd/blob/binary/rpi-cecd
@ashwinkp, I've got an LG 32LV3500 and your binary works great for me too...
I'm actually on my way to replace the original one by re-compiling Openelec. Thanks!!
sure will have a look. A quick look indicates a difference in registering all events and in handling SL_COMMAND_CONNECT_REQUEST. Will debug to see what exactly makes the code miss events the second time.
Update:
I have remerged code from this repo to mine and included minimal changes to get things working. This should work for most people. After adding vc_cec_register_all it works everytime. So added it under LG code.
Also tried changing device type as HD recorder so two devices might show up in simplink menu.
On a side note. The TV vendor ID is kind of weired but it does set to LG
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x1000
Logical Address: 0x4
Probing for TV vendor ID
...... done.
TV Vendor ID: 0xffff
Setting Vendor Id to LG
@olajep Your changes on master branch Works for me. I also tried your compiled binary that also works fine.
@s7mx1 can you try the binary @ http://www.multiupload.nl/BFUY0OTF66 . I had changed the response to SL_COMMAND_UNKNOWN_01 from 0205 to 0201 to make the device list as hdd recorder under simplink menu. In the linked binary it again sends 0205. Another Q for you. Did the binary on my master branch work anytime for you?
others can you confirm if the new changes here work for your LG TV ?
The binary complied from your latest repo works for my LG TV but not olajep's (navi keys are not working at all). I will try olajep's binary from the repo tonight. I also got the strange TV Vendor ID: 0xffff as well. I always compile it from source if possible. The last binary I tried from you was about 9 days ago and it was working fine
Corrections.
Your recent changes broke the navi keys for me. The last working code is 4973ff4. I also tried olajep's branch@4973ff461f it seems to work as well.
working one@4973ff461f (olajep's branch):
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x1000
Logical Address: 0x4
Probing for TV vendor ID
...... done.
TV Vendor ID: 0xffff
Setting Vendor Id to LG
cec_callback: failed transmission: reason=0x0001, length=0x02, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x90, operand1=0x00, operand2=0x00 payload=[(40):90:00]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(04):8c]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x01, operand2=0x00 payload=[(04):89:01]
VendorCommand_LG: SL_COMMAND_UNKNOWN_01 received
VendorCommand_LG: Sent 0205
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8f, operand1=0x00, operand2=0x00 payload=[(04):8f]
cec_callback: received power status query
cec_callback: sent powerstatus on
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x83, operand1=0x00, operand2=0x00 payload=[(04):83]
cec_callback: debug: reason=0x0002, length=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x04, operand2=0x00 payload=[(04):89:04:00]
VendorCommand_LG:SL_COMMAND_CONNECT_REQUEST
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x04, operand2=0x00 payload=[(04):44:04]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x04, operand2=0x00 payload=[(04):45:04]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x04, operand2=0x00 payload=[(04):44:04]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x04, operand2=0x00 payload=[(04):45:04]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x04, operand2=0x00 payload=[(04):44:04]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x04, operand2=0x00 payload=[(04):45:04]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x04, operand2=0x00 payload=[(04):44:04]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x04, operand2=0x00 payload=[(04):45:04]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x04, operand2=0x00 payload=[(04):44:04]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x04, operand2=0x00 payload=[(04):45:04]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x04, operand2=0x00 payload=[(04):44:04]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x04, operand2=0x00 payload=[(04):45:04]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x04, operand2=0x00 payload=[(04):44:04]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x04, operand2=0x00 payload=[(04):45:04]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x04, operand2=0x00 payload=[(04):44:04]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x04, operand2=0x00 payload=[(04):45:04]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
none working one (olajep's latest master)
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x1000
Logical Address: 0x4
Probing for TV vendor ID
...... done.
TV Vendor ID: 0xffff
Setting Vendor Id to LG
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x01, operand2=0x00 payload=[(04):89:01]
VendorCommand_LG: SL_COMMAND_UNKNOWN_01 received
VendorCommand_LG: Sent 0205
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x01, operand2=0x00 payload=[(04):89:01]
VendorCommand_LG: SL_COMMAND_UNKNOWN_01 received
VendorCommand_LG: Sent 0205
cec_callback: debug: reason=0x0002, length=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x04, operand2=0x00 payload=[(04):89:04:00]
VendorCommand_LG:SL_COMMAND_CONNECT_REQUEST
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0004, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x44, operand1=0x44, operand2=0x00 payload=[(04):44:44]
cec_callback: debug: reason=0x0008, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x45, operand1=0x44, operand2=0x00 payload=[(04):45:44]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
@s7mx1: I am sorry did not get time last two days to check into your issue. Did you try the new binary at link posted above or can you try rebuilding the source with line 248 changed as shown below from latest to see if things work ?
Line 248: response[2] = 0x01;
Change to
response[2] = 0x05;
Note Disable and reenable simplink from menu while rpi-cecd is not running. The above line changes the device type and its better that TV sees no device before starting rpi-cecd.
Changed the code and recompile the code against the latest git but still no navigation buttons
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x1000
Logical Address: 0x4
Probing for TV vendor ID
...... done.
TV Vendor ID: 0xffff
Setting Vendor Id to LG
cec_callback: failed transmission: reason=0x0001, length=0x02, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x90, operand1=0x00, operand2=0x00 payload=[(40):90:00]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(04):8c]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x01, operand2=0x00 payload=[(04):89:01]
VendorCommand_LG: SL_COMMAND_UNKNOWN_01 received
VendorCommand_LG: Sent 0205
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8f, operand1=0x00, operand2=0x00 payload=[(04):8f]
cec_callback: received power status query
cec_callback: sent powerstatus on
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x83, operand1=0x00, operand2=0x00 payload=[(04):83]
cec_callback: debug: reason=0x0002, length=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x04, operand2=0x00 payload=[(04):89:04:00]
VendorCommand_LG:SL_COMMAND_CONNECT_REQUEST
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(04):8c]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x01, operand2=0x00 payload=[(04):89:01]
VendorCommand_LG: SL_COMMAND_UNKNOWN_01 received
VendorCommand_LG: Sent 0205
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8f, operand1=0x00, operand2=0x00 payload=[(04):8f]
cec_callback: received power status query
cec_callback: sent powerstatus on
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x83, operand1=0x00, operand2=0x00 payload=[(04):83]
cec_callback: debug: reason=0x0002, length=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x04, operand2=0x00 payload=[(04):89:04:00]
VendorCommand_LG:SL_COMMAND_CONNECT_REQUEST
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(04):8c]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x01, operand2=0x00 payload=[(04):89:01]
VendorCommand_LG: SL_COMMAND_UNKNOWN_01 received
VendorCommand_LG: Sent 0205
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x8f, operand1=0x00, operand2=0x00 payload=[(04):8f]
cec_callback: received power status query
cec_callback: sent powerstatus on
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x83, operand1=0x00, operand2=0x00 payload=[(04):83]
cec_callback: debug: reason=0x0002, length=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x04, operand2=0x00 payload=[(04):89:04:00]
VendorCommand_LG:SL_COMMAND_CONNECT_REQUEST
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x01, operand2=0x00 payload=[(04):1a:01]
cec_callback: debug: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: unknown event: reason=0x0002, length=0x02, retval=0x00, initiator=0x0, follower=0x4, opcode=0x1a, operand1=0x03, operand2=0x00 payload=[(04):1a:03]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x85, operand1=0x00, operand2=0x00 payload=[(0f):85]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0x4, opcode=0x00, operand1=0x00, operand2=0x00 payload=[(04):00]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: debug: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: unknown event: reason=0x0002, length=0x01, retval=0x00, initiator=0x0, follower=0xf, opcode=0x36, operand1=0x00, operand2=0x00 payload=[(0f):36]
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
cec_callback: unknown event: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
I have just updated my rpi-cecd and connected it to my LG 32LV3400 and the navigation and directional navigation (up down left right) are all working. Nice work guys!
If it helps, I used these earlier posted commands to update my rpi-cecd
sudo -s
cd /usr/bin
mv rpi-cecd rpi-cecd.old
wget -k --no-check-certificate https://github.com/olajep/rpi-cecd/raw/binary/rpi-cecd --output-document=rpi-cecd
chmod 755 rpi-cecd
reboot
@s7mx1 I think I found the issues.
- break at line 491 is missing
- For all code using CEC_VENDOR_ID_LG to check for vendor LG I have added the QUIRK also in checks.
In your cases the vendor id is not working so the response for some commands like deck status might not be replied to by current code.
@olajep can you pull and merge these changes so that s7mx1 can try and confirm if these work
I am following this discussion for quite some time, but which binary I tried, none ever worked for me. Because no device was selectable in the simpllink menu. My TV is a LG 42LD650.
My last try was to follow the advices from cybertimber2009 (which are similar to the ones from olajeps website).
I am wondering, what i am doing wrong.
raspbmc states: new connection found: rpi-cecd
and log gives:
20:31:34 T:1200616512 NOTICE: ES: Incoming connection from rpi-cecd
20:31:34 T:1101086720 DEBUG: ------ Window Init (DialogKaiToast.xml) ------
20:31:40 T:1101086720 ERROR: XLCDproc::Connect - Unable to connect to host, LCDd not running?
20:31:40 T:1101086720 ERROR: XLCDproc::Initialize - Connect failed. Giving up.
20:31:40 T:1101086720 DEBUG: ------ Window Deinit (DialogKaiToast.xml) ------
20:31:44 T:1101086720 NOTICE: Samba is idle. Closing the remaining connections
20:32:35 T:1200616512 NOTICE: ES: Client rpi-cecd from 127.0.0.1 timed out
20:32:37 T:1101086720 DEBUG: CAnnouncementManager - Announcement: OnScreensaverActivated from xbmc
20:32:37 T:1101086720 DEBUG: GOT ANNOUNCEMENT, type: 2, from xbmc, message OnScreensaverActivated
20:32:37 T:1101086720 DEBUG: ------ Window Init () ------
the TV is active the whole time, since the raspberry is powered by the usb port of the TV
are there bad hdmi cable, which do not transmit cec?
But to get cec working on raspbmc, that is absolutely awesome.
@s7mx1 nice to know that it worked for you.
Just when I was about to ask @olajep to close the issue another challenger appears :)
@Joecorleone : This log is not usefull.
Could you ssh to the box and run the following commands and pastebin the log ?
killall -9 rpi-cecd
/rpi-cecd
Im using a LG 32LK330U and get the following when attempting to start rpi-cecd using the latest from cybertimber2009s instructions above:
pi@raspbmc:/var/log$ rpi-cecd
rpi-cecd starting
Physical Address: 0x1000
Logical Address: 0x4
Probing for TV vendor ID
........................................
........................................
........................................
........................................
........................................
........................................
done.
TV Vendor ID: 0x18c086
cec_callback: failed transmission: reason=0x0001, length=0x02, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x90, operand1=0x00, operand2=0x00 payload=[(40):90:00]
No device seen in the Simplink menu
@handsomepete seems to be a vendor id issue. Does not match with any known id's see https://github.com/Pulse-Eight/libcec/blob/master/include/cectypes.h#L670
@olajep Can we not use the vendor id received in callback function and then proceed with init or simpler option would be include a command line option to override the vendor id.
@ashwinkp Quite funny I get the same vendor id like @handsomepete . The physical adress is probabply only the hdmi-port right?
Maybe one could defie that id as lg too? Then it would at least work for us.
Thank you
pi@raspbmc:~$ rpi-cecd
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x2000
Logical Address: 0x4
Probing for TV vendor ID
........................................
.... done.
TV Vendor ID: 0x18c086
cec_callback: failed transmission: reason=0x0001, length=0x02, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x90, operand1=0x00, operand2=0x00 payload=[(40):90:00]
I tried again, and it gives the same id
@ashwinkp : We do the test in cec_callback now. Can you test my master. Did I break something?
I works for me but I had to fix other stuff to, mainly the power state.
@olajep: Will try the code when I reach home. One issue I see is that the special initialization should happen only once or only when vendor id for tv changes. Otherwise I guess the system might go for a toss esp. for LG TV.
Edit:
@olajep: With the one time init fix things now work same as before.
@handsomepete / @Joecorleone does the new binary from here also work for you now?
If not can you try the binary that I cooked with CEC_VENDOR_ID_LG set to 0x18c086 you can get it from http://www.multiupload.nl/2BELG71EAB
Btw I hope you have not updated the Tv firmware using any custom firmware. right?
What key or key combination from a LG remote is for subtitles, audio or video properties.
@ashwinkp: I have updated some time ago. The process started automatically when I plugged the network cable in.
The current binary from olajep gives:
pi@raspbmc:/usr/bin$ sudo rpi-cecd
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x2000
Logical Address: 0x4
cec_callback: failed transmission: reason=0x0001, length=0x01, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(40):8c]
cec_callback: failed transmission: reason=0x0001, length=0x01, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(40):8c]
So the id seems to be found. But in the simpllink menu nothing is listed.
Your special binary gives:
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x2000
Logical Address: 0x4
cec_callback: failed transmission: reason=0x0001, length=0x01, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(40):8c]
cec_callback: failed transmission: reason=0x0001, length=0x01, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(40):8c]
which is completely similar and again no hardware in simpllink menu is enlightened
@ashwinkp getting the same as @Joecorleone with your modified binary:
root@raspbmc:/usr/bin# rpi-cecd
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x1000
Logical Address: 0x4
cec_callback: failed transmission: reason=0x0001, length=0x01, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(40):8c]
cec_callback: failed transmission: reason=0x0001, length=0x01, retval=0x0f, initiator=0x4, follower=0x0, opcode=0x8c, operand1=0x00, operand2=0x00 payload=[(40):8c]
never touched the tv firmware
@handsomepete / @Joecorleone sorry forgot to mention you will have to wait till you see a bunch of messages with reason =2 the vendor id detection happens after that only.
@sbuhaian you could use the stop+ pause to bring up the menu then you can access the menu buttons using navigation keys.
@ashwinkp never gets past the reason =1, just repeats over and over. I have it going for 10 minutes now...
@handsomepete make sure you have simplink set to ON in your TV. Absence of reason = 2 means the pi is not receiving any messages, Also check if the cable you are using is capable of carrying CEC signals read http://goo.gl/mJ9mc. try working with a different cable and with no other device connected over HDMI to see if it helps.
@ashwinkp the reason is the cable =(. I tried one, which was a bit more expansive and the it worked. Now I get (with your special binary)
rpi-cecd starting
Use http://www.cec-o-matic.com to debug the payload. Remove the
parantheses surrounding the first byte. (it's the header)
Physical Address: 0x1000
Logical Address: 0x4
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
DeviceVendorID: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
TV Vendor: 0x00e091
cec_callback: debug: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
DeviceVendorID: reason=0x0002, length=0x04, retval=0x00, initiator=0x0, follower=0xf, opcode=0x87, operand1=0x00, operand2=0xe0 payload=[(0f):87:00:e0:91]
when I connect:
cec_callback: debug: reason=0x0002, length=0x03, retval=0x00, initiator=0x0, follower=0x4, opcode=0x89, operand1=0x04, operand2=0x01 payload=[(04):89:04:01]
VendorCommand_LG:SL_COMMAND_CONNECT_REQUEST
It seems that TV Vendor ID: 0x18c086, is not a valid id, but might signalize, that the cable is improper.
Has anyone a suggestion for a short hdmi cable (0.5m -1.0m) which provides cec capabilities.
At last, for me only the play pause etc. buttons worked. no navigation buttons.
The simpllink menu showed TV, Disc and HDD recorder. Tv starts tv. Disc and Hdd recorder goes to xbmc.
Actually xbmc does not play my 1080p movies in realtime, any suggestions?
@Joecorleone: Now the vendor id is proper so you should use the binary from olajep then the navigation buttons will also work. For cable you could see if http://goo.gl/NwPps works
NOTE: I havent used this product and cannot gaurantee that it will work. You should look for a cable advertised to work with CEC.
Rdg realtime playback it would depend on the distro you use and how you stream the content. A Fast SD card helps if the media is on card. Avoid streaming over wireless and use wired connection if required.
HTH.
@olajep can we close this issue now.
@olajep : All keys that could work on LG TV work now. For some TV models the back and menu keys work out of box.
For people (like me) who don't have back and menu keys working I have introduced key combinations which simulate those two keys when a combination of two keys are pressed in a quick sequence.
Back = Stop + Select(OK)
Menu = Stop + Pause
Working keys
Left, Right, Up, Down, Play, Pause, Stop , Rewind, Forward, Ok, Menu, Back
AFAIK there are no additional keys supported by LG over CEC.
AFAIK there are no additional keys supported by LG over CEC.
FYI if your remote has the red/green/yellow/blue buttons, those are transmitted over CEC too.