HDMI-CEC driver & device
#1
Posted 10 August 2011 - 16:07
I have seen your commits about.
What tests have you made and what works in your experience ?
I wrote a little driver and input device model for e2
I can successfully communicate with Samsung Anynet+ system.
I can set the device name in Tv osd and i can use the passthrough remote control function.
I wrote a little function to translate Hdmi-cec rc codes in enigma2 key events so i can control the box from the tv remote control.
But all this game works only with Anynet+ recent tv
and i have to set the physical address manually.
Some users have report it working on a pair of Sony bravia models too. But in my tests on my Bravia KDL S325600 it accept all commands but reject the 0x8E request so i cannot have tv remote control events.
Re: HDMI-CEC driver & device #2
Posted 10 August 2011 - 16:18
I can swich on and off my Panasonic plasma, haven't tried more fancy commands. Tried input selection, but the TV does seem to ignore them.
It seems different brands are implementing different commands, only the most basic (such as power on/off) seem to be standard.
I know that Sjaaky has written some experimental code to communicate with his AV receiver (remote control events), but I do not know the current status.
So I think the device is usable, we just have to find nice applications for it, and write a nice plugin around it
Re: HDMI-CEC driver & device #3
Posted 10 August 2011 - 16:54
But my Samsung with Anynet+ is fully compatible with all Hdmi-Cec standard codes and it works fine.
I have not a Panasonic to make tests so i cannot try it. I have seen a debug report of a Panasonic and it seems to me promising.
Maybe some kind of tricky can be performed, like for example to pass to tv the same vendor id.
P.s. The standby function seems to work with all models but the wakeup not.
Re: HDMI-CEC driver & device #4
Re: HDMI-CEC driver & device #5
Posted 11 August 2011 - 10:45
So all in all my girlfriend is happy, because she only has to use 1 rc. But the solution is tailored to just my needs. A lot more development is be needed to turn it into an generally useful plugin.
btw, do you know this site: http://www.cec-o-matic.com/ ? It is very very helpful.
Re: HDMI-CEC driver & device #6
Posted 11 August 2011 - 10:57
btw, do you know this site: http://www.cec-o-matic.com/ ? It is very very helpful.
Yes i know this site, and i spent many hours with pdf of hdmi-cec specs.
I have a good result and i can now control both my television and my Vu+ box with only one remote control (tv remote control).
Here is the buttons map i have done and integrated in bh image:
I will prepare a git with the driver i have wrote so you can check it
Attached Files
Re: HDMI-CEC driver & device #7
Posted 11 August 2011 - 13:36
The eRCDevice class is needed to produce e2 key events when we receive a hdmi-cec message button/press/release : (0x44 0x45)
The driver manage automatically the reply to standard Hdmi-Cec opcodes:
0x46, 0x8f, 0x83, 0x85, 0x86, 0x8d
This is enough in Anynet+ Samsung tv to estabilish a full communication with the tv:
(report address, set active source, set OSD name, set menu status (0x8e)
This last opcode is the most important. If it is accepted by Tv you will have the remote control tv passthrough activated. In this case you will receive a button pres/release command (0x44, 0x45) every time a button is pressed on the tv remote control.
The parameter of the opcode is the key-id pressed.
The driver have a little function to remap the keyid sent by Hdmi-Cec in e2 keyd events.
This allow the box to be controlled from the Tv remote control.
The driver is here: http://sourceforge.n...penstb/hdmi-cec
Re: HDMI-CEC driver & device #8
Re: HDMI-CEC driver & device #9
Posted 11 August 2011 - 14:02
Cool, thank you.
I bet the reason my sony tv stops responding is because I don't respond properly to all cec request.
I have reports that this driver works with Sony Bravia KDL40EX402
But i am sure it don't works on Bravia KDL 5600 series that seems to use a non-standard Hdmi-Cec codes.
So i don't know if it can work with your tv.
Re: HDMI-CEC driver & device #10
Re: HDMI-CEC driver & device #11
Re: HDMI-CEC driver & device #12
Posted 11 August 2011 - 18:58
Hear, hear /images/smiley/more/023.gifThx to PLI team for all the precious work you make for all sat community.
All my sources will be always available for PLI team.
We all have to thank Pli team for your Open Source style and approach.
Re: HDMI-CEC driver & device #13
Re: HDMI-CEC driver & device #14
Re: HDMI-CEC driver & device #15
Posted 13 August 2011 - 21:18
Unfortunately, I cannot get it to respond to anything except the standby/wakeup commands which were already working.
I've added a few additional commands, and replied to them, even reported to be 'panasonic', but that still doesn't seem to make the 'TP link' option happy.
Also, no remotecontrol passthrough.
How did you get your TV to enable the passthrough? Some menu option? Or does it do so automatically when it detects an active source?
Anyway, I've finally added a simple hdmicec setup plugin, so people can configure standby/wakeup or active/inactive (or disable the whole thing if they wish)
Re: HDMI-CEC driver & device #16
Posted 13 August 2011 - 23:43
I merged your remotecontroll stuff to our repository (hope you don't mind) so I could do some debugging with my panasonic.
Very good, maybe we can make progresses.
The repository is there to work togheter you are admin too of the project and all is shared.
Unfortunately, I cannot get it to respond to anything except the standby/wakeup commands which were already working.
This is not normal. You television have to reply in any case to commands.
If it doesn't reply it is because it expects different replyes or is because you are not sending data in correct format. At the beginning i had the same problem so i asked a trick to Vu devel and they replyed to me to use __u8 type to send data.
For this reason i suggest to you to test with exactly the driver i have posted, because it is the only way that i have success. I have tested your struct cec message but it seems to me to remember that it doesn't worked so i have introduced use the __u8 type.
The reason because the command 0x36 works always is that it have not parameters i suppose.
I have a report of one of my team member of the driver on Panasonic. The passthrough command seems to be not accepted but it seems to understand the commands.
So i suppose that you should have something similar with your tv.
[BlackHole-HDMICEC] received from 00 command: 46 7f 00 00 [BlackHole-HDMICEC] message sent to 00: 47 42 6c 61 [BlackHole-HDMICEC] received from 00 command: 00 47 00 00As you can see the Panasonic in this case send command 0x46 (asking the preferred OSD name for the box) and after we send our name with 0x47 command it denied our requests with this command:
received from 00 command: 00 47 00 00
command 0x00 means that our command is rejected and the first parameter is the opcode of the command reject (0x47). Usually it have to explain the cause too in the followers parameters but in this case we have not any cause: 00 00
So the Tv don't ignore our commands but it accept or not. I suggest to use __u8 type to make tests.
I've added a few additional commands, and replied to them, even reported to be 'panasonic', but that still doesn't seem to make the 'TP link' option happy.
Also, no remotecontrol passthrough.
How did you get your TV to enable the passthrough? Some menu option? Or does it do so automatically when it detects an active source?
Usually when you send active source tv ask the preferred osd name and then the menu state.
When you reply to the menu state request with the parameter "0" it means that you want that the tv remote passthrough is activated.
Unfortunately i am in vacation at my seaside home now and i haven't here a Samsung tv with Anynet+ to produce a debug to show to you.
But i have a part of the debug of a Sony Bravia working
[BlackHole-HDMICEC] received from 00 command: 83 7f 00 00 [BlackHole-HDMICEC] message sent to 0f: 84 20 00 01 [BlackHole-HDMICEC] received from 00 command: 46 7f 00 00 [BlackHole-HDMICEC] message sent to 00: 47 42 6c 61 [BlackHole-HDMICEC] received from 00 command: 8c 7f 00 00
Anyway, I've finally added a simple hdmicec setup plugin, so people can configure standby/wakeup or active/inactive (or disable the whole thing if they wish)
I have integrated in the image settings the config of Hdmi-cec and i send a kind of inizialization sequence to the tv where the settings are saved.
Something like:
def saveMyHdmiSettings(self): config.hdmicec.tvstandby.save() config.hdmicec.tvwakeup.save() config.hdmicec.boxstandby.save() config.hdmicec.on.save() config.hdmicec.port.save() configfile.save() self.bhHdmiInit() def bhHdmiInit(self): from enigma import eHdmiCEC eHdmiCEC.getInstance().sendMessage(0x0F, 0x82) eHdmiCEC.getInstance().sendMessage(0, 0x8E) self.session.openWithCallback(self.bhClose, MessageBox, "Hdmi-Cec inizialized.\nYou can now try to use your tv rc to control your Vu+ Box.", MessageBox.TYPE_INFO)
Let me know if there will be progressess.
Re: HDMI-CEC driver & device #17
Posted 14 August 2011 - 00:54
Quite sure the message structure is correct, the tv is clearly accepting the commands I'm sending.
(when I omit the active source reply, which has more than one byte data, the tv does not switch to the correct hdmi input. so that command is working)
Panasonic seems to be using vendor specific commands (starting with a0), so the only chance would probably be to capture communication with a working device, and emulate that.
vendor specific command:
eHdmiCEC: received message A0 00 80 45 20 00 00
then there's the vendor id exchange (notice I fake panasonic):
eHdmiCEC: received message 8C
eHdmiCEC: send message 87 00 80 45
and then silence.
So no menu queries.
Only a streaming path request (86), and an address change (80) from 0.0.0.0 to 1.0.0.0 when the tv is switched on.
Re: HDMI-CEC driver & device #18
Posted 14 August 2011 - 07:30
I think a bravia too should work at least in set the preferred OSD name.
Here are the Samsung and Sony tv menu after the command:
case 0x47: buf[1] = 11; memcpy(buf+3, "BlackHole", 10);
Attached Files
Re: HDMI-CEC driver & device #19
Posted 14 August 2011 - 08:31
I can compile an image for my team with your driver so it can be tested from my staff with Bravia and Samsung and we can have reports if the drivers work or not.
So please push your drivers in openstb repository and we will work on the code posted there.
We can use it for test purposes to be sure to have the same code.
We have to consider too that my tests are made on Vu+. I don't know if you are testing driver on Vu or Et.
Maybe there is something different between the way in wich Vu and Et manage hdmi-cec
Re: HDMI-CEC driver & device #20
Posted 14 August 2011 - 10:40
I'm not too sure about the __u8, that's just another typedef to an unsigned char.
Quite sure the message structure is correct, the tv is clearly accepting the commands I'm sending.
You are right pieterg your code is brilliant and you don't need to use u8
I have compiled an image with your driver and tested on my vu uno with a Sony Bravia
The code work fine and the set name function too. We have in television menu the name we have set: linux stb.
Here is the debug of your driver with my Bravia.
eHdmiCEC: received message eHdmiCEC: received message 83 eHdmiCEC: send message 84 57 6B eHdmiCEC: received message 46 eHdmiCEC: send message 47 6C 69 6E 75 78 20 73 74 62 00
I have modifyed the code too to test the menuon function and to be sure to send the setactive state.
It is a little trick only for test:
if (message.length) { sendMessage(message.address, message.length, message.data); } if (message.data[0] == 0x47) { sleep(1); message.data[0] = 0x82; /* report active / inactive */ getPhysicalAddress(&message.data[1]); message.length = 3; sendMessage(0x0f, message.length, message.data); sleep(1); message.data[0] = 0x8e; /* menu status */ message.data[1] = 0; /* menu activated */ message.length = 2; sendMessage(0, message.length, message.data); }
With this addition i had this debug:
eHdmiCEC: received message 46 eHdmiCEC: send message 47 6C 69 6E 75 78 20 73 74 62 00 eHdmiCEC: send message 82 ED 8E eHdmiCEC: send message 8E 00 ERROR reading PES (fd=40) - ERROR reading PES (fd=40) - Value too large for defined data type eHdmiCEC: received message 00 8E 00
Maybe the abort message sent by tv: 00 8E 00 contains the reason of the reject of menu active command that cause that the passtrough remote control is not activated, but we have to change code to read the debug messages because we have the error: Value too large for defined data type. Maybe it contains an ascii string ?
By the way it sould work on Samsung systems.
Here is the shot of your driver working on my Bravia for set osd name command
Attached Files
8 user(s) are reading this topic
0 members, 8 guests, 0 anonymous users