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
- 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";
};
- 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.
- 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.
- 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.
