I appreciate that mangOH was killed off by Sierra, but this info may still be useful to some. I believe this only applies to the Yellow, but haven’t looked into it.
I have updated the meta-mangoh layer to bring it up to speed with the latest firmware. In the process I discovered that the SECI lines on the WiFi + BLE chip from USI were shorted to ground through 0R resistors (!!!). If R301 and R303 are removed, this update enables coexistence and vastly improves WiFi and BLE performance on the Yellow.
This update also:
- Moves to Release 15: ports the layer from Release 13 (Yocto 2.5, kernel 3.18) to Release 15 (SWI9X06Y_03.00.x: Yocto 3.1 “dunfell”, kernel 4.14).
- WiFi driver: uses the kernel’s own
brcmfmacdriver instead of the old backports build. The device tree now describes WL_REG_ON as the SDIO slot’s supply, so the kernel powers the WiFi chip before it scans the bus, and nothing in userspace toggles it. - WiFi link drops: adds two patches backported from Linux 4.15 so
brcmfmacloads the chip’s CLM (regulatory) blob. Without them the WiFi link drops about once a minute. - Bluetooth: uses the kernel’s own
hci_uart. An mdev rule runsbtattachon the FT230X USB-UART whenever it appears, so the controller comes up ashci0, with dunfell’s BlueZ. - I2C devices: describes the board’s I2C devices in the device tree and builds their drivers, mainline’s backported where 4.14 lacks them: BMI160 IMU, BME680, OPT3002 light sensor, BQ27426 fuel gauge, BQ25601 charger, SX1509 GPIO expander, PCF85063 RTC and the EEPROM.
- SFTP: adds an SFTP server to the image, and SFTP/SCP to curl. Release 15’s libssh2 talks to current OpenSSH servers; Release 13’s couldn’t.
- DV3 boards: supports them (WL_REG_ON on GPIO33) with
MANGOH_YELLOW_REV = "dv3". This hasn’t been tried on a DV3 board.
To turn coexistence on:
- Remove R301 and R303. They ground WL_GPIO_1 and WL_GPIO_2; nothing goes in their place.
- Add
MANGOH_YELLOW_SECI = "y"to conf/local.conf.
That flag adds btcxwarflags=0x1 and btc_mode=5 to the WiFi chip’s NVRAM file. It also adds a script that turns on the CYW20719’s side of the SECI link: it writes to the chip’s RAM over HCI each time the controller attaches, and nothing goes to the chip’s flash. Without coexistence, the antenna switch stays with WiFi while it’s joined, and Bluetooth uses no antenna at all.
Not covered yet:
- Bluetooth pairings across a reboot (
/varis a tmpfs). - Classic Bluetooth’s RFCOMM, BNEP and HIDP modules.
- The I2C devices’ interrupts, and the magnetometer.
The NVRAM file is Broadcom’s reference-board file, as USI’s isn’t public.
seemoo-lab’s InternalBlue and Frankenstein projects helped with the CYW20719’s internals.