Die LG Soundbars mit Bluetooth koppeln, dann im Bluetooth manager nur auf den COM-Port verbinden, das erstellt dann /dev/rfcomm0 / rfcommN
Flow Control abschalten sonst wird 0x13 verschluckt
stty -F /dev/rfcomm0 raw -echo -ixon
Für die ganz harten
stty -F /dev/rfcomm0 raw -echo -opost -icrnl -inlcr -igncr -isig -icanon -iexten
Man kann auch in python direkt raw senden
with open("/dev/rfcomm0", "wb") as f:
attrs = termios.tcgetattr(f.fileno())
attrs[1] &= ~termios.OPOST
termios.tcsetattr(f.fileno(), termios.TCSADRAIN, attrs)
f.write(cmd)
f.flush()
Damit man sieht was die Soundbar zurückmeldet (das geht schon mit der IR-Fernbedienung) kann man hexdump nutzen:
cat /dev/rfcomm0 | hexdump -v -C
Bissel angenehmer is xxd was immerhin andere Farben für nicht printbare bytes.
stdbuf -o0 xxd -g1 /dev/rfcomm0
Das zeigt aber nur alle 16 bytes was an also evtl. 2x was drücken oder man druckt direkt jedes Byte einzeln:
while IFS= read -r -n1 c; do printf '%02X\n' "'$c"; done < /dev/rfcomm0
Die Befehle und Antworten sind ultra einfach wenn man weiss wie es funktioniert:
Wir senden immer
- AT Header (41 54)
- Modul-ID (d0 für Lautstärke z.B.)
- Funktions-ID (1d ist z.B. der Mute-Toggle für Modul d0!)
- Länge der Parameter für die Funktion (oft 02 also 2 Parameter)
- Parameter
- Prüfsumme
Das sieht für Modul Lautstärke, Funktion Mute, Parameter gibts keine so aus:
41 51 - d0 - 1d - 00
00 - Lautstärke 1 rauf (keine Parameter)
01 - Lautstärke 1 runter (keine Parameter)
02 - Lautstärke mit Parametern setzen (d0 02 01 VOL)
Die Lautstärke setzen Funktion antwortet bei mir immer mit d0 02 02 64 VOL ich nehme an das 64 heisst einfach "Skala 100"
03 - Lautstärke abfragen? (keine Parameter)
Das schickt bei mir immer d0 03 1e ff 00 64 VOL 00 00 00 00 00 00 00 00 00 00 00 00 00 Chksum und den EQ Namen
1d - Mute toggle (keine Parameter)
1e - EQ wechseln (looped alle durch, keine Parameter)
00 (keine Parameter) - Eingang
Der antwortet mit dem aktuellen Eingang:
- Antwort 07 Bluetooth: `41 54 00 00 01 07 f8`
- Antwort d0 Optical: `41 54 00 00 01 d0 2f`
- Antwort 03 LG-TV: `41 54 00 00 01 03 fc`
01 Eingang wählen
00 01 00 schaltet auf optical
00 01 01 07 schaltet auf bluetooth
02 kA
Ich weiss es nich, blinkt wenn bluetooth an?
03 (keine Parameter) - Identifier
Der antwortet immer nur mit "LG SOUND PLATE": 41 54 00 03 0f 00 4c 47 20 53 4f 55 4e 44 20 50 4c 41 54 45 1f
04 (keine Parameter) - Firmware?
Der antwortet mir immer das gleiche, ich nehme daher an das is die aktuelle Firmware: 00 04 03 08 d0 07 1e
05 (keine Parameter) - Lautstärke
Antwort is immer 41 54 00 05 02 VOL Chksum
06 - Sys dump
Hier kommen 2 AT Antworten, die 2. ist immer der aktuelle Displayinhalt der Bar, die 1. ist ein Sysdump der immer gleich is und derzeit uninteressant
07 - ohne Funktion
Liefert immer nen leeren Dump mit 00 00 00 00 00 oder antwortet auf 1 Parameter mit eben diesem. Keine Ahnung.
08 - ohne Funktion
Liefert immer nen leeren Dump mit 10 00 00 00 00
0a - Power on/off
00 0a 00 Soundbar aus, 00 0a 01 01 soundbar an
0b unbekannt - antwortet aber mit 0b
0c unbekannt - antwortet mit 0c