Adding HCI bluetooth to my i.MX8 yocto build

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Adding HCI bluetooth to my i.MX8 yocto build

2,197件の閲覧回数
sgordon777
Contributor I

Hello I have a project targeting i.MMX8 and am using yocto to generate a Linux distro. We are connecting to a Realtek RT8761BTV_DS chip via UART2 for HCI.

Our project seemed to have bluetooth enabled by default, so I believe (probably wrongly) that all I needed to do was add a devicetree entry for uart2, which would associate it with bluetooth:

&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
status = "okay";

bluetooth {
compatible = "realtek,rtl8761a-bt";
max-speed = <115200>;
};
};

 

However, after build+flash+startup nothing seems ot happen with bluetooth. I can manually start the bluetooth daemon:

systemctrl bluetooth start,

But no controllers show up in the list:

bluetoothctl list

{nothing}

 

I am brand new to yocto

-What am I missing in the yocto cofig?

-Can anyone point me to some relevant documentation on configuring bluetooth for yocto?
-Can anyone give me some tips on how to start debugging this?

Thanks

 

Bluetooth-related Kernel options: (from config.bz)

 

CONFIG_BT=y

CONFIG_BT_BREDR=y

CONFIG_BT_RFCOMM=y

CONFIG_BT_RFCOMM_TTY=y

CONFIG_BT_BNEP=y

CONFIG_BT_BNEP_MC_FILTER=y

CONFIG_BT_BNEP_PROTO_FILTER=y

CONFIG_BT_HIDP=y

# CONFIG_BT_HS is not set

CONFIG_BT_LE=y

CONFIG_BT_LEDS=y

# CONFIG_BT_MSFTEXT is not set

# CONFIG_BT_AOSPEXT is not set

# CONFIG_BT_DEBUGFS is not set

# CONFIG_BT_SELFTEST is not set

# CONFIG_BT_FEATURE_DEBUG is not set

# Bluetooth device drivers

CONFIG_BT_INTEL=m

CONFIG_BT_BCM=m

CONFIG_BT_RTL=y

CONFIG_BT_HCIBTUSB=m

# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set

CONFIG_BT_HCIBTUSB_BCM=y

# CONFIG_BT_HCIBTUSB_MTK is not set

CONFIG_BT_HCIBTUSB_RTL=y

# CONFIG_BT_HCIBTSDIO is not set

CONFIG_BT_HCIUART=y

CONFIG_BT_HCIUART_SERDEV=y

CONFIG_BT_HCIUART_H4=y

# CONFIG_BT_HCIUART_NOKIA is not set

CONFIG_BT_HCIUART_BCSP=y

CONFIG_BT_HCIUART_ATH3K=y

CONFIG_BT_HCIUART_LL=y

CONFIG_BT_HCIUART_3WIRE=y

# CONFIG_BT_HCIUART_INTEL is not set

# CONFIG_BT_HCIUART_BCM is not set

CONFIG_BT_HCIUART_RTL=y

# CONFIG_BT_HCIUART_QCA is not set

# CONFIG_BT_HCIUART_AG6XX is not set

# CONFIG_BT_HCIUART_MRVL is not set

# CONFIG_BT_HCIBCM203X is not set

# CONFIG_BT_HCIBPA10X is not set

# CONFIG_BT_HCIBFUSB is not set

CONFIG_BT_HCIVHCI=y

# CONFIG_BT_MRVL is not set

# CONFIG_BT_ATH3K is not set

# CONFIG_BT_MTKSDIO is not set

# CONFIG_BT_MTKUART is not set

# CONFIG_BT_VIRTIO is not set

# end of Bluetooth device drivers

# CONFIG_NFC_HCI is not set

CONFIG_SATA_AHCI=y

CONFIG_SATA_AHCI_PLATFORM=y

CONFIG_AHCI_IMX=y

# CONFIG_AHCI_IMX_PMP is not set

CONFIG_AHCI_CEVA=y

CONFIG_AHCI_XGENE=y

CONFIG_AHCI_QORIQ=y

# CONFIG_SATA_ACARD_AHCI is not set

# CONFIG_PATA_ARTOP is not set

# CONFIG_MIPI_I3C_HCI is not set

# CONFIG_GPIO_BT8XX is not set

# CONFIG_SENSORS_SBTSI is not set

# CONFIG_VIDEO_USBTV is not set

# CONFIG_VIDEO_SONY_BTF_MPX is not set

# CONFIG_VIDEO_BT819 is not set

# CONFIG_VIDEO_BT856 is not set

# CONFIG_VIDEO_BT866 is not set

# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set

# CONFIG_SND_BT87X is not set

# CONFIG_SND_SOC_MTK_BTCVSD is not set

CONFIG_SND_SOC_BT_SCO=y

CONFIG_USB_OHCI_LITTLE_ENDIAN=y

CONFIG_USB_XHCI_HCD=y

# CONFIG_USB_XHCI_DBGCAP is not set

CONFIG_USB_XHCI_PCI=m

CONFIG_USB_XHCI_PCI_RENESAS=m

CONFIG_USB_XHCI_PLATFORM=y

CONFIG_USB_EHCI_HCD=y

CONFIG_USB_EHCI_ROOT_HUB_TT=y

CONFIG_USB_EHCI_TT_NEWSCHED=y

CONFIG_USB_EHCI_PCI=y

# CONFIG_USB_EHCI_FSL is not set

CONFIG_USB_EHCI_HCD_PLATFORM=y

CONFIG_USB_OHCI_HCD=y

CONFIG_USB_OHCI_HCD_PCI=y

CONFIG_USB_OHCI_HCD_PLATFORM=y

# CONFIG_USB_UHCI_HCD is not set

CONFIG_MMC_SDHCI=y

CONFIG_MMC_SDHCI_IO_ACCESSORS=y

# CONFIG_MMC_SDHCI_PCI is not set

CONFIG_MMC_SDHCI_ACPI=y

CONFIG_MMC_SDHCI_PLTFM=y

CONFIG_MMC_SDHCI_OF_ARASAN=y

# CONFIG_MMC_SDHCI_OF_ASPEED is not set

# CONFIG_MMC_SDHCI_OF_AT91 is not set

CONFIG_MMC_SDHCI_OF_ESDHC=y

# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set

CONFIG_MMC_SDHCI_CADENCE=y

CONFIG_MMC_SDHCI_ESDHC_IMX=y

CONFIG_MMC_SDHCI_F_SDH30=y

# CONFIG_MMC_SDHCI_MILBEAUT is not set

# CONFIG_MMC_DW_BLUEFIELD is not set

CONFIG_MMC_CQHCI=y

CONFIG_MMC_SDHCI_XENON=y

# CONFIG_MMC_SDHCI_OMAP is not set

CONFIG_MMC_SDHCI_AM654=y

CONFIG_BTRFS_FS=m

CONFIG_BTRFS_FS_POSIX_ACL=y

# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set

# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set

# CONFIG_BTRFS_DEBUG is not set

# CONFIG_BTRFS_ASSERT is not set

# CONFIG_BTRFS_FS_REF_VERIFY is not set

CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y

# CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE is not set

# CONFIG_RBTREE_TEST is not set

# CONFIG_TEST_KSTRTOX is not set

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fasdnks


CONFIG_BT=y
CONFIG_BT_BREDR=y
CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=y
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=y
# CONFIG_BT_HS is not set
CONFIG_BT_LE=y
CONFIG_BT_LEDS=y
# CONFIG_BT_MSFTEXT is not set
# CONFIG_BT_AOSPEXT is not set
# CONFIG_BT_DEBUGFS is not set
# CONFIG_BT_SELFTEST is not set
# CONFIG_BT_FEATURE_DEBUG is not set
CONFIG_BT_INTEL=m
CONFIG_BT_BCM=y
CONFIG_BT_RTL=m
CONFIG_BT_QCA=y
CONFIG_BT_HCIBTUSB=m
# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
CONFIG_BT_HCIBTUSB_BCM=y
# CONFIG_BT_HCIBTUSB_MTK is not set
CONFIG_BT_HCIBTUSB_RTL=y
# CONFIG_BT_HCIBTSDIO is not set
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_SERDEV=y
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_NOKIA is not set
CONFIG_BT_HCIUART_BCSP=y
CONFIG_BT_HCIUART_ATH3K=y
CONFIG_BT_HCIUART_LL=y
CONFIG_BT_HCIUART_3WIRE=y
# CONFIG_BT_HCIUART_INTEL is not set
CONFIG_BT_HCIUART_BCM=y
# CONFIG_BT_HCIUART_RTL is not set
CONFIG_BT_HCIUART_QCA=y
# CONFIG_BT_HCIUART_AG6XX is not set
# CONFIG_BT_HCIUART_MRVL is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set

0 件の賞賛
返信
4 返答(返信)

2,031件の閲覧回数
sgordon777
Contributor I

Hi Zhiming, thanks for your reply, I was able to resolve this issue (of the uart2 port not showing up under /dev) by removing this:

&uart2 {
bluetooth {
compatible = "realtek,rtl8761b-bt";
};
};

After I removed this statement, the uart2 port again appeard under /dev (/dev/ttymxc1) 

 

0 件の賞賛
返信

2,145件の閲覧回数
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @sgordon777 

You can check the kernel log about firmware load messages.

Zhiming_Liu_0-1727156362973.png

 



Best Regards
Zhiming

0 件の賞賛
返信

2,059件の閲覧回数
sgordon777
Contributor I

I am trying to do this mostly through guesswork and wasting an ridiculous amount of time on it, I am not very fammiliar with Linux or it's internals.

The changes below had this working for a while but it stopped and I've not been able to firgure out why.

Is there any documentation or information which could help me with this task?

 

We are interfacing the rtk8761btv chip via UART2, which is /dev/ttymxc1

1- Recipe to build realtek's rtk-hciattach utility.

2- Recipe to transfer to firmware files use by #1

3- devicetree:

# dts file

&uart2 {
bluetooth {
compatible = "realtek,rtl8761b-bt";
};
};

 

#dtsi file

/* Panel Communicationi or Debug */
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
assigned-clocks = <&clk IMX8MM_CLK_UART2>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
fsl,uart-has-rtscts;
status = "okay";
};

 

#defconfig file

CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_RTL=y

 

#project file

IMAGE_INSTALL:append = " bluez5"
IMAGE_INSTALL:append = " rtk-hciattach"
IMAGE_INSTALL:append = " rtlbt-firmware"

0 件の賞賛
返信

2,054件の閲覧回数
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi

Can you provide kernel log with dmesg?

Best Regards
Zhiming

0 件の賞賛
返信