Sorry, you need to enable JavaScript to visit this website.

Microzed Wilink8 BT on Linux

Unsolved
12 posts / 0 new
jernst's picture
jernst
Junior(0)
Microzed Wilink8 BT on Linux

We're having a bit of difficulty getting BT up and running even on the I/O carrier card with the Wilink8.

I've been following this guide: http://microzed.org/sites/default/files/documentations/GSG-AES-PMOD-WILI...

And also the reference design here: http://zedboard.org/support/design/6491/66

However, it appears to only be a ramdisk and even when I dig around into the files I can't seem to find much in the way of an example of bringing up BT.

The closest I have is from the pdf guide, Appendex D:
# Enable the Bluetooth radio by setting the BT_EN pin high echo 54 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio54/direction echo 1 > /sys/class/gpio/gpio54/value # Bluetooth modules (drivers) do not require loading, - they are already built into the kernel # activate BlueZ hciattach -t 30 -s 115200 /dev/ttyPS1 texas 3000000 flow hciconfig

When I get to the hciattach step, it gets stuck with an initialization timeout error.

I think I have the device tree setup correctly and the hardware design from the guides and reference designs. If you could send any more information along (a full linux system with a bt script) or put me in touch with someone to help get this working that would be great, or any ideas on what to look out for in terms of potential problems.

I can post any further information if it will be helpful.

Jason

MCUTechMktr's picture
MCUTechMktr
Moderator(0)
Microzed Linux testing of Wilink8 BT

Jason

Reasons for that hciattach step timing-out could be:

a) hardware: does the Zynq FPGA design you are using have the BT UART + GPIO interface implemented correctly?

b) linux image and device-tree: are you using latest download from the microzed.org Wilink 8 Adaptor folder or is this your own build?

Regards
Peter

MCUTechMktr's picture
MCUTechMktr
Moderator(0)
Microzed Linux testing of Wilink8

Jason

Some debugging questions from my side:
1) Is the Wilink8 Adaptor plugged into the correct Pmod connectors? (JK and PS on the IO Carrier Card)
2) Is the TI WL1835COMB module fully plugged into the adaptor's COM connector?
3) Were you able to verify Wi-Fi operation with your test setup?
4) Did you make use of the pre-generated files in the XLX_7010_WL8\SD_image\ramdisk_version folder?
(- I have just downloaded and re-verified Bluetooth operation using those files)

Regards
Peter

jernst's picture
jernst
Junior(0)
a) I think so, I followed pg

a) I think so, I followed pg 21/22 of the pdf when setting it up just like the Wi-Fi, which seems to be working fine. One thing I noticed though from the instructions. In the block diagram in Fig 9, when I follow the checkboxes you outline - I don't see the SDIO_1 ports at first. The only way I can make this show up is to click in the Zynq block design: Perihperal I/O Pins and then set SD 1 to EMIO. Maybe this is part of the problem?

b) The linux image is one which I have compiled - it is using this branch of the kernel: https://github.com/Xilinx/linux-xlnx/tree/xilinx-v2014.2

with the 3.14.0-rt1 realtime patch applied to it and the wilink patch from here: http://downloads.architechboards.com/deposit/microZed_wilink8.patch

(following the scripts from the vm in the pdf)

For the device tree, I am using the one from the microzed reference design.

jernst's picture
jernst
Junior(0)
definitely a vivado / design issue

So I played around with it some more and used the boot.bin provided in the reference which contains the bitstream from your reference design and can get everything to work - so it looks like its a problem with my vivado design - I'll see if I can figure out whats wrong and post anything I find.

jernst's picture
jernst
Junior(0)
problem solved

So it turns out I wasn't copying the bitstream properly across to the sdcard (my boot.bif wasn't including it). This allowed the Wi-Fi to work but not BT. Once I fixed this everything was good.

jernst's picture
jernst
Junior(0)
Firmware problem

So I thought it was going to work - I got up to the firmware part of the BT because I hadn't found this in the reference designs for you guys yet - I found this: https://git.ti.com/wilink8-bt/ti-bt-firmware/trees/master

But when I take the TIInit_11.8.32.bts file from there and put it on /lib/firmware I get the following error:
can't set line discipline: invalid argument

I noticed the TI repo is using different processors, so is there a version I should be looking for?

MCUTechMktr's picture
MCUTechMktr
Moderator(0)
BlueZ hciattach issue resolved

Note: The BlueZ hciattach issue you encountered has been corrected and updated "ready-to-use" Linux files have been posted. To download, use the MicroZed SD Card Script.zip file located at http://microzed.org/product/wilink-8-adaptor

jernst's picture
jernst
Junior(0)
Ready-to-use works great, any special patches or modules?

Okay the ready-to-use Linux files work great, but I was wondering if there is some special patch or modules required in order to use our own kernel. It seems it only works with the exact pre-compiled kernel provided in the image. Even using the yocto / architech instructions do not produce a kernel that will work with the bluetooth (unless I am doing something wrong) - it just gets stuck at initialization timeout.

thummel26's picture
thummel26
Junior(0)
Also adding, we scoped the rx

Also adding, we scoped the rx/tx and enable lines going to the radios and they are all mapped properly.

MCUTechMktr's picture
MCUTechMktr
Moderator(0)
Solution: Microzed Wilink8 BT on Linux bug

The Bluetooth-specific issue with this particular build, was determined to be due to a missing (previously applied) kernel patch that was required to fix a hardware flow-control bug in linux-xlnx/drivers/tty/serial/xilinx_uartps.c.

Though the serial flow control setting had been enabled in the devicetree, this setting was not being used by the driver.

This has since been fixed and the repository updated

Do the following steps to rebuild the corrected uImage Linux kernel image file

1. Delete your linux-xlnx folder
2. Re-execute the provided uz_kernel.sh script file to rebuild your Linux kernel from scratch.
3. Copy the generated uImage file to the SD card BOOT folder

ie.
$ cd ~/Documents
$ rm -Rf linux-xlnx
$ ./uz_wl8_kernel.sh
$ cp ~/Documents/linux-xlnx/arch/arm/boot/uImage /media/BOOT

Regards
Peter

jernst's picture
jernst
Junior(0)
Confirmed Solution

We finally got around to trying with the latest instructions. Works with our kernel and our boards. Thanks for the help!