📱 Erkannter Endgerättyp ⛱️ Tag und Nacht. Verbraucht keinen oder einen 🍪.
guest
Login 🍪 0 Anzahl Ihrer gespeicherten Kekse, führt zur Keksdose

LG Soundbars per /dev/rfcomm0

Die LG Soundbars mit Bluetooth koppeln, dann im Bluetooth manager nur auf den COM-Port verbinden, das erstellt dann /dev/rfcomm0 / rfcommN

Senden / Empfangen Vorbereitung

  • 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()

Empfang hexdumpen

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

Empfang dekodieren

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

Liste der Module plus Funktionen

Modul d0 Lautstärke

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)

Modul 00 System Status

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

Current PTF

Hintergrund ändern. Verbraucht keinen oder einen 🍪.

Verknüpften Viewport öffnen

🎮 Steuerung
Dokumentation 🕹️
Sie sind leider kein Entwickler :(

Content Nodes Amount

Diligence / PTF Amount

FPS

Vertex-Count