linux4wilc / driver

DEPRECATED: Updated Linux drivers for the ATWILC1000/ATWILC3000 products are located at https://github.com/linux4microchip/linux/tree/master/drivers/net/wireless/microchip/wilc1000. To simplify development, the legacy Linux4WILC was merged into the Linux4Microchip repo where driver development continues (Please refer latest ATWILC1000/ATWILC 3000 Wi-Fi Link Controller Linux User Guide) Driver code for Microchip ATWILC Wireless Devices (ATWILC1000 & ATWILC3000)
https://www.microchip.com/wwwproducts/en/ATWILC1000
32 stars 19 forks source link

WILC3000 Bluetooth Android 7.0 Bluedroid support #81

Closed BDP42 closed 5 years ago

BDP42 commented 5 years ago

Hi,

I'm investigating getting WILC3000 Bluetooth functionality running in an Android 7 platform. This uses Bluedroid instead of Bluez. The documentation refers to the HCI toolset to configure and start the interface but Bluedroid does not seem to have this. I presume I need to add vendor layer for the Android Framework, either a Microchip (although I don't see one) one or maybe another existing one. Is there any documentation to help with this? Is there any fundamental reason why it should not work, given an appropriate vendor layer?

Thanks Bruno

AdhamAbozaeid commented 5 years ago

Hi @BDP42 The bluedroid still uses HCI over UART commands to communicate with the device, same as the blueZ, which is a standard interface defined by the Bluetooth standard v4.0 and higher. Accordingly, I don't see any reason why it shouldn't work with bluedroid or any other BLE stack that uses HCI commands. However, all the example commands used in the userguide are blueZ specific, but you can still use the steps that downloads and start the BLE FW. echo BT_POWER_UP > /dev/wilc_bt echo BT_FW_CHIP_WAKEUP > /dev/wilc_bt echo BT_DOWNLOAD_FW > /dev/wilc_bt echo BT_FW_CHIP_ALLOW_SLEEP > /dev/wilc_bt

You will actually need to implement a vendor specific porting layer to use the WILC FW with the Bluedroid. As far as I remember, the vendor specific layer provides APIs to start the FW, configure UART, control powersave.. etc. However, HCI commands doesn't use the vendor specific layer, and are passed directly to the UART controller.

Microchip doesn't have a porting example for Bluedroid, but you can use blueZ as a guideline.

Thanks, Adham