Installation de la libcec4 pour hdmi-CEC
Bonjour a tous,
Un petit message de détresse sur l'utilisation de la libcec non pas pour un Raspberry mais pour un mini pc et une tv toshiba regza.J'ai trouvé un article du 26 janvier 2017 très bien fait, qui parle de tout ce qu'on voudrait savoir sur la libcec et l'utilisation de l'hmdi cec ( http://alexandre-laurent.developpez....-cec/#LIII-B-2 ).
Je suis en train de developper une application web qui pourrait permettre de faire des appels videos depuis une télévision.
Lorsque je lance des commandes pour faire des tests, les commande
Code:
echo "scan" | cec-client -s
Code:
echo "standby 0" | cec-client -s
marche bien, mais dès que j'essaye d'envoyer des valeurs, comme par exemple pour passer la TV en mode active par exemple
Code:
echo "tx 10 82" | cec-client -s
voici ce qu'il me rend :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| root@Box-E4:/home/administrateur# echo "tx 10 82" | cec-client -s
opening a connection to the CEC adapter...
DEBUG: [ 143] Broadcast (F): osd name set to 'Broadcast'
DEBUG: [ 144] connection opened, clearing any previous input and waiting for active transmissions to end before starting
DEBUG: [ 145] communication thread started
DEBUG: [ 155] turning controlled mode on
NOTICE: [ 179] connection opened
DEBUG: [ 179] processor thread started
DEBUG: [ 179] << Broadcast (F) -> TV (0): POLL
TRAFFIC: [ 179] << f0
DEBUG: [ 179] setting the line timeout to 3
DEBUG: [ 215] >> POLL sent
DEBUG: [ 215] TV (0): device status changed into 'present'
DEBUG: [ 215] << requesting vendor ID of 'TV' (0)
TRAFFIC: [ 215] << f0:8c
TRAFFIC: [ 428] >> 0f:87:00:00:39
DEBUG: [ 428] TV (0): vendor = Toshiba (000039)
DEBUG: [ 428] expected response received (87: device vendor id)
DEBUG: [ 428] replacing the command handler for device 'TV' (0)
NOTICE: [ 428] registering new CEC client - v3.0.1
DEBUG: [ 428] detecting logical address for type 'recording device'
DEBUG: [ 428] trying logical address 'Recorder 1'
DEBUG: [ 428] << Recorder 1 (1) -> Recorder 1 (1): POLL
DEBUG: [ 428] >> TV (0) -> Broadcast (F): device vendor id (87)
TRAFFIC: [ 428] << 11
DEBUG: [ 460] CEC transmission - received response - TRANSMIT_FAILED_ACK
TRAFFIC: [ 461] << 11
DEBUG: [ 497] CEC transmission - received response - TRANSMIT_FAILED_ACK
DEBUG: [ 498] >> POLL not sent
DEBUG: [ 498] using logical address 'Recorder 1'
DEBUG: [ 498] Recorder 1 (1): device status changed into 'handled by libCEC'
DEBUG: [ 498] Recorder 1 (1): power status changed from 'unknown' to 'on'
DEBUG: [ 498] Recorder 1 (1): vendor = Pulse Eight (001582)
DEBUG: [ 498] Recorder 1 (1): CEC version 1.4
DEBUG: [ 498] AllocateLogicalAddresses - device '0', type 'recording device', LA '1'
DEBUG: [ 498] setting ackmask to 2
DEBUG: [ 503] Recorder 1 (1): osd name set to 'CECTester'
DEBUG: [ 503] Recorder 1 (1): menu language set to 'eng'
DEBUG: [ 503] GetPhysicalAddress - trying to get the physical address via ADL
DEBUG: [ 504] GetPhysicalAddress - ADL returned physical address 0000
DEBUG: [ 504] GetPhysicalAddress - trying to get the physical address via nvidia driver
DEBUG: [ 504] GetPhysicalAddress - nvidia driver returned physical address 0000
DEBUG: [ 504] GetPhysicalAddress - trying to get the physical address via drm files
DEBUG: [ 504] GetPhysicalAddress - drm files returned physical address 2000
DEBUG: [ 504] AutodetectPhysicalAddress - autodetected physical address '2000'
DEBUG: [ 504] Recorder 1 (1): physical address changed from ffff to 2000
DEBUG: [ 504] << Recorder 1 (1) -> broadcast (F): physical adddress 2000
TRAFFIC: [ 504] << 1f:84:20:00:01
DEBUG: [ 640] using persisted autonomous mode setting: 'enabled'
DEBUG: [ 645] using persisted CEC version setting: '1.4'
DEBUG: [ 651] using persisted logical address setting: 'Recorder 1'
DEBUG: [ 657] using persisted device type setting: 'recording device'
DEBUG: [ 662] using persisted logical address mask setting: '206'
DEBUG: [ 679] using persisted device name setting: 'CECTester'
DEBUG: [ 684] using persisted physical address setting: '2000'
NOTICE: [ 684] CEC client registered: libCEC version = 3.0.1, client version = 3.0.1, firmware version = 7, firmware build date: Wed Apr 13 10:36:11 2016 +0000, logical address(es) = Recorder 1 (1) , physical address: 2.0.0.0, compiled on Linux-3.13.0-77-generic ... , features: P8_USB, P8_detect, randr
DEBUG: [ 684] Recorder 1 (1): vendor = Toshiba (000039)
DEBUG: [ 684] replacing the command handler for device 'Recorder 1' (1)
DEBUG: [ 684] << Recorder 1 (1) -> Broadcast (F): vendor id Toshiba (39)
TRAFFIC: [ 684] << 1f:87:00:00:39
DEBUG: [ 817] << Recorder 1 (1) -> TV (0): OSD name 'CECTester'
TRAFFIC: [ 817] << 10:47:43:45:43:54:65:73:74:65:72
DEBUG: [ 1089] << requesting power status of 'TV' (0)
TRAFFIC: [ 1089] << 10:8f
TRAFFIC: [ 1265] >> 01:90:00
DEBUG: [ 1265] TV (0): power status changed from 'unknown' to 'on'
DEBUG: [ 1265] >> TV (0) -> Recorder 1 (1): report power status (90)
DEBUG: [ 1265] expected response received (90: report power status)
TRAFFIC: [ 1266] << 10
DEBUG: [ 1298] unregistering all CEC clients
NOTICE: [ 1298] unregistering client: libCEC version = 3.0.1, client version = 3.0.1, firmware version = 7, firmware build date: Wed Apr 13 10:36:11 2016 +0000, logical address(es) = Recorder 1 (1) , physical address: 2.0.0.0, compiled on Linux-3.13.0-77-generic ... , features: P8_USB, P8_detect, randr
DEBUG: [ 1298] Recorder 1 (1): power status changed from 'on' to 'unknown'
DEBUG: [ 1298] Recorder 1 (1): vendor = Unknown (000000)
DEBUG: [ 1298] Recorder 1 (1): CEC version unknown
DEBUG: [ 1298] Recorder 1 (1): osd name set to 'Recorder 1'
DEBUG: [ 1298] Recorder 1 (1): device status changed into 'unknown'
DEBUG: [ 1298] setting ackmask to 0
DEBUG: [ 1304] turning controlled mode off
DEBUG: [ 1309] unregistering all CEC clients
DEBUG: [ 2189] communication thread ended |
Donc je me suis dis que ca venait peut etre de la version de libcec, j'utilise actuellement la libcec3.0.1 .
Je suis donc partie dans l'idée d'installer la libcec4 en suivant votre article dans la rubrique "III-B-2-a. Installation".
Mais quand je lance make -j4 une erreur intervient :
Code:
1 2 3 4 5
| /home/admin/libcec/src/cecc-client/cecc-client.c : In function 'cec_process_console_command' :
/home/admin/libcec/src/cecc-client/cecc-client.c:384:3: internal compiler error: Erreur du bus
if (strncmp(buffer, "q", 1) == 0 || strncmp(buffer, "quit", 4) == 0)
^
..... |
Quand je vais voir le code sur github, voici la fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
static int cec_process_console_command(const char* buffer)
{
size_t buflen;
buflen = strlen(buffer);
if (strncmp(buffer, "q", 1) == 0 || strncmp(buffer, "quit", 4) == 0)
return 0;
cec_process_command_as(buffer) ||
cec_process_command_scan(buffer);
//TODO
return 1;
} |
Je vois le petit TODO qui veut bien dire que la fonction n'est pas encore faite :p .
Est il possible d'ignorer cette fonction ? , car du coup l'installation de la libcec4 échoue.
Ma priorité serait de pouvoir lancer une commande pour switcher entre la box, et la tv, et la tv à la box.
Voila, j'espère avoir été assez clair sur mon problème en espérant que vous pourrez me venir en aide.
Cordialement,
Jules PAGET