Rockchip · AI & Linux Hub

Android und BSP

Rockchip Android 9.0 Bluetooth-Konfiguration

Rockchip Android 9.0 Bluetooth-Konfiguration — V1.0.0

· ArmSoM Editorial · Rockchip source documentation · 4 Min. Lesezeit

Vollständige Konfiguration und Fehlersuche der technischen Seiten 4–7 aus der siebenseitigen chinesischen Quelle V1.0 vom 2018-11-16. Titel Android 9.0, Zweckabsatz Android 8.1: Beides bleibt als historische Quellangabe erhalten, nicht als aktuelle Kompatibilitätszusage. Nur chinesische Quelle, keine englischen Originalbilder. Keine technischen Bilder oder Tabellen; DTS und Befehle sind editierbar. Deckblatt, Revision, Inhaltsverzeichnis und wiederholte Kopf-/Fußzeilen entfallen. Keine Befehle, Firmwareänderungen oder Hardwaretests ausgeführt.

Prüfung: Seitengetrennte BT-DTS und Umbrüche in libbt-Pfaden sowie Snoop-Eigenschaften verbunden. 32k, GPIOs, Ports, Eigenschaften und Codeschreibweisen bleiben erhalten. Das pinctrl-DTS der Quelle enthält unvollständige Klammern/Semikolons; keine geratenen Ergänzungen. Vor Einsatz mit Quellcode und Hardware abgleichen. Stromversorgungsbefehle nur für autorisierte Geräte. Snoop-Logs können Kommunikation und Gerätedaten offenlegen: Zugriff begrenzen, Logging nach dem Debuggen deaktivieren und unnötige Logs entfernen.

1 Zweck

Automatische BT-Kompatibilität auf Android 8.1 und die zugehörigen Hinweise erläutern. Nach diesen Anweisungen erstellte Firmware unterstützt die entsprechenden BT-Module; ein Firmware-Image kann mehrere BT-Module unterstützen.

1.1 Kernel-Hinweise

  1. Zuerst wifi_chip_type konfigurieren. Das System lädt je nach chip_type unterschiedliche libbt-Bibliotheken.
wireless-wlan {
compatible = "wlan-platdata";
wifi_chip_type ="ap6255"; //或者如”rtl8723ds”;
WIFI,host_wake_irq = <&gpio0 GPIO_D4 GPIO_ACTIVE_HIGH>;
status = "okay";
};
  1. BT-DTS-Konfiguration
wireless-bluetooth {
compatible = "bluetooth-platdata";
clocks = <&rk808 1>;
clock-names = "ext_clock";
//wifi-bt-power-toggle;
uart_rts_gpios = <&gpio2 19 GPIO_ACTIVE_LOW>;
pinctrl-names = "default", "rts_gpio";
pinctrl-0 = <&uart0_rts>;
pinctrl-1 = <&uart0_gpios>;
//BT,power_gpio = <&gpio3 19 GPIO_ACTIVE_HIGH>;
BT,reset_gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>;
BT,wake_gpio = <&gpio2 26 GPIO_ACTIVE_HIGH>;
BT,wake_host_irq = <&gpio0 4 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&pinctrl {
wireless-bluetooth {
uart0_gpios: uart0-gpios {
rockchip,pins =
<2 19 RK_FUNC_GPIO &pcfg_pull_none>;
}
};

Die obige BT-DTS-Konfiguration legt hauptsächlich Stromversorgung, Interrupts und weitere Funktionspins fest. An den tatsächlichen Hardware-Schaltplan anpassen.

  1. Der BT-Stromversorgungstreiber liegt in net/rfkill/rfkill-bt.c und erzeugt /sys/class/rfkill/rfkill0/state.

Der erste folgende Befehl schaltet das Bluetooth-Modul manuell ein, der zweite aus. Beim Aktivieren von Bluetooth schaltet das System die Versorgung automatisch ein.

echo 1 > /sys/class/rfkill/rfkill0/state
echo 0 > /sys/class/rfkill/rfkill0/state

1.2 Android-Hinweise

1. Libbt

Libbt initialisiert den Bluetooth-Chip einschließlich Firmware-Laden. Verschiedene Chips verwenden unterschiedliche, meist vom Chiphersteller bereitgestellte libbt-Versionen. Die Quelle verwendet hauptsächlich Broadcom und Realtek mit Code in hardware/broadcom/libbt beziehungsweise hardware/realtek/rtkbt/code/libbt-vendor. Normalerweise sind nur Modulport und Firmwarepfad zu konfigurieren. Broadcom und Realtek verwenden unterschiedliche Dateien: hardware/broadcom/libbt/conf/rockchip/rksdk/bt_vendor.conf beziehungsweise hardware/realtek/rtkbt/code/vendor/etc/bluetooth/rtkbt.conf.

2. bluedroid

Bluedroid-Quellcode liegt unter system/bt. Seit Android 9.0 heißt die kompilierte Bibliothek libbluetooth.so. Einige konfigurierbare Makros können in device/rockchip/rk3368/bluetooth/bdroid_buildcfg.h stehen.

Die Log-Ausgabestufen der Bluedroid-Komponenten lassen sich in /system/etc/bt_stack.conf auf dem Gerät ändern.

“persist.bluetooth.btsnoopenable” steuert Snoop-Logging. “persist.bluetooth.btsnooppath” ändert den Speicherpfad; Standard ist “/data/misc/bluetooth/logs/btsnoop_hci.log”. “persist.bluetooth.btsnoopsize” legt die Dateigröße fest.

3. PCBA-BT-Test

Der PCBA-BT-Testcode verwendet standardmäßig /dev/ttyS0 als Modulport. Bei Bedarf einen anderen Port in /system/etc/bt_stack.conf konfigurieren.

2 BT-Fehlersuche

2.1 BT lässt sich nicht aktivieren

1. Hardwareprobleme

(1) Einschalt-Timing von BT messen; (2) ordnungsgemäße Versorgung mit dem 32k-Takt prüfen; (3) serielle Datenkommunikation prüfen.

2. Softwareprobleme

(1) Korrekte Konfiguration des Kommunikationsports zwischen BT-Modul und Haupt-CPU prüfen; (2) Kernel-DTS mit dem Hardwaredesign abgleichen; (3) passende Firmware für das Bluetooth-Modul prüfen.

  1. Laut Quelle benötigt der Bluetooth-Stack nach Android 8.0 standardmäßig BLE. Daher ist ein BLE-fähiges Modul erforderlich, sonst startet Bluetooth nicht.

2.2 Bluetooth-Musik stockt

1. Hardwareprobleme

(1) Ordnungsgemäße Lötung der BT-Antenne prüfen; (2) BT-Hochfrequenzwerte auf Einhaltung der Anforderungen messen.

2. Softwareprobleme

Stockende Musik hat häufig Hardwareursachen. Auch Wi-Fi/BT-Koexistenz kann dazu führen; daher zuerst einen aktuellen Wi-Fi-Treiber sicherstellen. Bei vielen einfachen Wi-Fi/BT-Kombimodulen kann sowohl Wi-Fi- als auch BT-Scanning die Bluetooth-Musik stören.

Dieses Thema entdecken → · Lernpfade →