Bluetooth on UART3 is not working on TX2 Custom Board


I am using cypress WIFI/BT combo chip connected on sdhci bus on SDIO interface.
In our design bluetooth is connected to uart3, so i enabled it and /dev/ttyTHS3 is coming as below-

[ 3.372761] serial-tegra 3130000.serial: RX in PIO mode
[ 3.373492] 3130000.serial: ttyTHS3 at MMIO 0x3130000 (irq = 39, base_baud = 0) is a TEGRA_UART

Now when i am running brcm_patchram_plus utility with /dev/ttyTHS3 then its writing hci_reset in a infinite loop as below

brcm_patchram_plus -d --baudrate 115200 --use_baudrate_for_download --patchram CYW4354_003.001.012.0433.1422.hcd --no2bytes /dev/ttyTHS3
option baudrate with arg 115200
option use_baudrate_for_download
option patchram with arg CYW4354_003.001.012.0433.1422.hcd
option no2bytes
open(/mnt/factory/bluetooth/bt_mac.txt) failed: No such file or directory (2)open(/proc/device-tree/chosen/nvidia,bluetooth-mac) failed: No such file or directorys
01 03 0c 00
01 03 0c 00
01 03 0c 00

I am also attaching the schematic screenshot. Please suggest if any tx2 specific configuration required for bluetooth other than enabling uart from dtsi.


We don’t have experience for BT over UART.

Generally, such wifi/bt module can support multiple interfaces. There should be a specific pin or register on the module to control which mode the module is running now. This depends the module, so you have to make sure your wifi/bt module is running in SDIO/UART mode.

As for the log, it looks like it is trying to search the mac address for bluetooth but there is no such file. From the experience of TX2 on-board wifi/bt case, this mac address is read from eeprom and put as nvidia,bluetooth-mac in device tree. This part is handled by bcmdhd driver.

Hi Wayne,

Can you please how can i make uart3 as full duplex,
Is there any way to configure CTS and RTS pins from dtsi ?

Hi anjali.dutt,

Is there any error from your UART3? RTS or CTS has error?

BTW, are you using tx2i/tx2-4gb?

We are using TX2-4GB Varient with baseline 32.4.3.

When we are using broadcom opensource application brcm_patchram_plus to communicate with the CY4354 BT module, we did not see any activity on the TX bus, but when we pulled down the CTS and RTS from hardware, then activity was observed on the TX bus.
But on the RX side still nothing came.

Please suggest is what could be the issue with this.

hello anjali.dutt,

it’s UART-D for your serial@3130000,
for example,

        uartd: serial@3130000 {
                compatible = "nvidia,tegra186-hsuart";
                iommus = <&smmu TEGRA_SID_GPCDMA_0>;
                reg = <0x0 0x03130000 0x0 0x40>;
                reg-shift = <2>;
                interrupts = <0 TEGRA186_IRQ_UARTD 0x04>;
                nvidia,memory-clients = <14>;
                dmas = <&gpcdma 19>, <&gpcdma 19>;
                dma-names = "rx", "tx";
                clocks = <&tegra_car TEGRA186_CLK_UARTD>,
                        <&tegra_car TEGRA186_CLK_PLLP_OUT0>;
                clock-names = "serial", "parent";
                resets = <&tegra_car TEGRA186_RESET_UARTD>;
                reset-names = "serial";
                status = "disabled";
                nvidia,tolerance-low-range = <0>;
                nvidia,tolerance-high-range = <4>;
                nvidia,adjust-baud-rates = <115200 115200 100>;

according to Jetson TX2 Series OEM Product Design Guide, you may have updates to selected by on-module multiplexor.
please also check [Figure 46. UART Connections] for reference,

Hi Gerry,

We are using 4GB variant, if we pull down RTS and CTS pins from HW then we see an activity on Tx bus.
Is there a way to disable HW flow control in UART3 from SW in TX2?


Please update on this.