Re: [beagleboard] Trying to get wireless (WL1271) driver working on Beaglebone

3,096 views
Skip to first unread message

Koen Kooi

unread,
Aug 15, 2012, 4:53:42 PM8/15/12
to beagl...@googlegroups.com

Op 15 aug. 2012, om 22:12 heeft Tim M <timlori...@hotmail.com> het volgende geschreven:

>
> We've built a cape board containing a TiWi-R2 transceiver chip from LS Research. This chip has a WL1271 chip under the hood. We are using this cape board on a Beaglebone Rev A3. We are using the Angstrom distribution.
>
> I'm trying to get WLAN working on this system. The host processor talks to the WL1271 chip over an SDIO interface. This is what I've done so far:
>
> 1. I've configured the pin mux for the appropriate pins by writing to the appropriate "magic" files, for example:
> echo 0x36 > /sys/kernel/debug/omap_mux/gpmc_wait
>
> 2. I've recompiled the Angstrom kernel, and I've loaded the kernel module wl12xx_sdio.ko, along with the following modules on which wl12xx_sdio.ko depends: wl12xx.ko, mac80211.ko, cfg80211.ko, rfkill.ko.
>
> Have I loaded the correct kernel modules to support WLAN? Am I missing some module? When I load these kernel modules (using modprobe) I don't see any WLAN-related messages in the dmesg output.
>
> I thought I would have to specify parameters to the wl12xx_sdio driver telling it which WLAN IRQ to use and which SDIO interface to use (SDIO0, SDIO1, etc), but none of these modules support such parameters.
>
> I have the feeling I'm missing something. I've been doing google searches and searching the beagleboard. I've found this topic:
> http://groups.google.com/group/beagleboard/browse_thread/thread/8f12c1e69d644e86
>
> This topic leads me to believe that I have to add support for the WL1271 chip to the kernel file arch/arm/mach-omap2/board-omap3beagle.c. Am I right?

Close, you need to add it to board-am335x-evm.c. It should already have some functions for the tiwi since the evm is using it as well. I'm going to have to support a similar cape in the future, so please keep us informed of your progress.

John (USP)

unread,
Aug 15, 2012, 5:41:01 PM8/15/12
to beagl...@googlegroups.com

From: beagl...@googlegroups.com [mailto:beagl...@googlegroups.com] On Behalf Of Tim M
Sent: Wednesday, August 15, 2012 1:12 PM
To: beagl...@googlegroups.com
Subject: [beagleboard] Trying to get wireless (WL1271) driver working on Beaglebone

 


We've built a cape board containing a TiWi-R2 transceiver chip from LS Research. This chip has a WL1271 chip under the hood. We are using this cape board on a Beaglebone Rev A3. We are using the Angstrom distribution.

I'm trying to get WLAN working on this system. The host processor talks to the WL1271 chip over an SDIO interface. This is what I've done so far:

1. I've configured the pin mux for the appropriate pins by writing to the appropriate "magic" files, for example:
echo 0x36 > /sys/kernel/debug/omap_mux/gpmc_wait

2. I've recompiled the Angstrom kernel, and I've loaded the kernel module wl12xx_sdio.ko, along with the following modules on which wl12xx_sdio.ko depends: wl12xx.ko, mac80211.ko, cfg80211.ko, rfkill.ko.

Have I loaded the correct kernel modules to support WLAN? Am I missing some module? When I load these kernel modules (using modprobe) I don't see any WLAN-related messages in the dmesg output.

I thought I would have to specify parameters to the wl12xx_sdio driver telling it which WLAN IRQ to use and which SDIO interface to use (SDIO0, SDIO1, etc), but none of these modules support such parameters.

I have the feeling I'm missing something. I've been doing google searches and searching the beagleboard. I've found this topic:
http://groups.google.com/group/beagleboard/browse_thread/thread/8f12c1e69d644e86

This topic leads me to believe that I have to add support for the WL1271 chip to the kernel file arch/arm/mach-omap2/board-omap3beagle.c. Am I right?

Any help on what I'm doing wrong, or what I should be doing, would be greatly appreciated.

Hi Tim,

It’s been a while since I worked on getting WL1271 working on the Beagle-xM, but from what I recall, if you are able to get the wl12xx_sdio kernel module loaded, then the problem is probably with wpa_supplicant. I recall that dbus did not launch wpa_supplicant correctly so I killed off the dbus (wpa_supplicant) process that started wpa_supplicant manually. If you do this correctly, you will find a wlan0 network interface and you should be up and running. Make sure you have a wifi.config file setup for connman with your wpa_supplicant settings. You might have to restart connman with systemctl restart connman.service.

Regards,

John



Tim M

-- To join: http://beagleboard.org/discuss
To unsubscribe from this group, send email to:
beagleboard...@googlegroups.com
Frequently asked questions: http://beagleboard.org/faq

Tim M

unread,
Aug 17, 2012, 11:11:02 AM8/17/12
to beagl...@googlegroups.com
Guys, I need help in getting the kernel source code so I can make some changes.

As I said in my post above, I built the angstrom kernel to produce the kernel modules (e.g. wl12xx_sdio.ko) I need to support WLAN. I built the kernel by following the instructions here: http://www.angstrom-distribution.org/building-angstrom . This compiled the kernel and the modules that I need.

The steps that I followed in these instructions created a "setup-scripts" directory and a whole bunch of sub-directories. I expected to find the kernel source code somewhere in these directories, but I can't. In particular, I want to make changes to the file arch/arm/mach-omap2/board-am335xevm.c (mentioned by Koen in a previous post), but I can't find the file. There are other files that I expected to find (like sdio.c, used to produce wl12xx_sdio.ko) but they are not present either.

I'm guessing that the build steps must download the source code, apply some patches, build the kernel, and then delete the source code? How can I get the source code that these steps are using? Can I alter the instructions so that they will not delete the source code after building?

I looked for the kernel source here https://github.com/beagleboard but it seems to have only a README and a patch, not the kernel source.

Forgive me if this seems like an elementary question, but I've never used git and bitbake. When building other kernels in the past I've download the source code, ran "make menuconfig" to configure the kernel, then simply ran make to build. Building the angstrom kernel is a LOT different!

Thanks for your help.

Tim M

Maxim Podbereznyy

unread,
Aug 17, 2012, 11:21:39 AM8/17/12
to beagl...@googlegroups.com
bitbake -c configure virtual/kernel
now you will the kernel source code

2012/8/17 Tim M <timlori...@hotmail.com>:

John (USP)

unread,
Aug 17, 2012, 12:53:12 PM8/17/12
to beagl...@googlegroups.com

Hi Tim,

If you don’t want Angstrom to delete the source code, comment out the “rm_work” line in <oe-folder>/config/local.conf file like this:

# INHERIT += “rm_work”

After building the kernel, you will find the source code in <oe-folder>/build/tmp-angstrom_v2012_05_eglibc/work/beaglebone-angstrom-linux-gnueabi/linux-mainline-3.xx.xx/git

Alternatively, you could always use Robert’s and Koen’s Beagleboard kernel script to build everything you need. Simply clone git://github.com/beagleboard/kernel.git, checkout the branch you need and run the patch.sh script. This will give you everything you need.

Regards,

John

Maxim Podbereznyy

unread,
Aug 17, 2012, 2:43:07 PM8/17/12
to beagl...@googlegroups.com

Remove rm_work - Very "smart" advice! And in addition to necessary 500MB of sources you will have 6-25GB of binary objects and all temporary stuff that is built just in case..

17.08.2012 20:53 пользователь "John (USP)" <jsyn...@us-power.com> написал:

John (USP)

unread,
Aug 17, 2012, 3:19:41 PM8/17/12
to beagl...@googlegroups.com

From: beagl...@googlegroups.com [mailto:beagl...@googlegroups.com] On Behalf Of Maxim Podbereznyy
Sent: Friday, August 17, 2012 11:43 AM
To: beagl...@googlegroups.com
Subject: RE: [beagleboard] Re: Trying to get wireless (WL1271) driver working on Beaglebone

 

Remove rm_work - Very "smart" advice! And in addition to necessary 500MB of sources you will have 6-25GB of binary objects and all temporary stuff that is built just in case..

Why is this a problem? Disk drives are cheap ;-)

Tim M

unread,
Aug 30, 2012, 6:21:03 PM8/30/12
to beagl...@googlegroups.com
Guys,

I've made a lot of progress toward getting WLAN working with the TiWi-R2 wireless chip on my custom cape board. I've made updates to arch/arm/mach-omap2/board-am335xevm.c for my wireless chip, based on the wireless support already in this file for the EVM board. Now when the kernel boots, my code executes and the proper kernel modules are automatically loading (wl12xx_sdio.ko, wl12xx.ko, mac80211.ko, cfg80211.ko, rfkill.ko.). This is good news,

However, I see this error in the dmesg output:
[   36.471130] wl1271: ERROR could not get nvs file: -2
[   36.519317] ieee80211 phy0: Failed to initialize wep: -2

I'm not sure what is causing the "Failed to initialize wep" error.

I did some googling on the "could not get nvs file" message. It seems I have to copy the contents of the "ti-connectivity" folder to /lib/firmware on the beaglebone. However, I can't find this folder among the Angstrom source code, nor does it seem to be built when I build the kernel.

I've built the kernel with this command: bitbake virtual/kernel

I've built the entire systemd-image with this command: bitbake systemd-image

Where can I get, or how do I build, the missing wl1271 firmware? Is there a bitbake command to build it?

I did find this among the stuff I built: am335x-pm-firmware.bin. Is this what I need?

Any help on what I'm doing wrong, or what I should be doing, would be greatly appreciated.

Tim M
 

Robert Nelson

unread,
Aug 30, 2012, 6:23:42 PM8/30/12
to beagl...@googlegroups.com
On Thu, Aug 30, 2012 at 5:21 PM, Tim M <timlori...@hotmail.com> wrote:
> Guys,
>
> I've made a lot of progress toward getting WLAN working with the TiWi-R2
> wireless chip on my custom cape board. I've made updates to
> arch/arm/mach-omap2/board-am335xevm.c for my wireless chip, based on the
> wireless support already in this file for the EVM board. Now when the kernel
> boots, my code executes and the proper kernel modules are automatically
> loading (wl12xx_sdio.ko, wl12xx.ko, mac80211.ko, cfg80211.ko, rfkill.ko.).
> This is good news,
>
> However, I see this error in the dmesg output:
> [ 36.471130] wl1271: ERROR could not get nvs file: -2
> [ 36.519317] ieee80211 phy0: Failed to initialize wep: -2
>
> I'm not sure what is causing the "Failed to initialize wep" error.
>
> I did some googling on the "could not get nvs file" message. It seems I have
> to copy the contents of the "ti-connectivity" folder to /lib/firmware on the
> beaglebone. However, I can't find this folder among the Angstrom source
> code, nor does it seem to be built when I build the kernel.

http://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git;a=tree;f=ti-connectivity;hb=HEAD

Just copy the files into that folder...

Regards,

--
Robert Nelson
http://www.rcn-ee.com/

Stan Hu

unread,
Aug 30, 2012, 6:49:46 PM8/30/12
to beagl...@googlegroups.com
On the Angstrom distribution, you can also do:

opkg install linux-firmware-wl12xx

Tim M

unread,
Sep 17, 2012, 11:56:46 AM9/17/12
to beagl...@googlegroups.com
Thanks for your help so far guys.

I've made my changes to kernel file board-am335xevm.c (I based my changes on the wireless support already there for the EVM board). I've installed the wl1271 chip firmware (opkg install linux-firmware-wl12xx). Now when the beaglebone boots, or when I issue "ifup wlan0", I get these dmesg errors:

[   36.793884] wl1271: ERROR sdio read failed (-84)
[   36.798706] wl1271: WARNING unsupported chip id: 0x66666666
[   37.163879] wl1271: ERROR sdio read failed (-84)
[   37.168701] wl1271: WARNING unsupported chip id: 0x66666666
[   37.533843] wl1271: ERROR sdio read failed (-84)
[   37.538665] wl1271: WARNING unsupported chip id: 0x66666666
[   37.550109] wl1271: ERROR firmware boot failed despite 3 retries

It appears that the wl1271 driver is attempting to write the firmware to the wl1271 chip, but it's failing.

When I issue "ifup wlan0" and use a scope to probe the pins, I see the WLAN enable pin go high, I see pulses on the SDIO clock pin, and I see pulses on the four SDIO data lines, so it appears the driver is trying to communicate with the chip.

Where is the chip id 0x66666666 coming from? Is that just a default value the driver reports when it can't read the chip?

Is there a way to turn on verbose debugging in the Wl1271 driver so I can get better debugging information?

Any ideas about what might be wrong would be appreciated.

Thanks,
Tim

PS I'm using the TiWi-R2 transceiver chip from LS Research, which has a WL1271 under the hood.

Stan Hu

unread,
Sep 17, 2012, 1:06:06 PM9/17/12
to beagl...@googlegroups.com
On Mon, Sep 17, 2012 at 8:56 AM, Tim M <timlori...@hotmail.com> wrote:
Thanks for your help so far guys.

I've made my changes to kernel file board-am335xevm.c (I based my changes on the wireless support already there for the EVM board). I've installed the wl1271 chip firmware (opkg install linux-firmware-wl12xx). Now when the beaglebone boots, or when I issue "ifup wlan0", I get these dmesg errors:

[   36.793884] wl1271: ERROR sdio read failed (-84)
[   36.798706] wl1271: WARNING unsupported chip id: 0x66666666
[   37.163879] wl1271: ERROR sdio read failed (-84)
[   37.168701] wl1271: WARNING unsupported chip id: 0x66666666
[   37.533843] wl1271: ERROR sdio read failed (-84)
[   37.538665] wl1271: WARNING unsupported chip id: 0x66666666
[   37.550109] wl1271: ERROR firmware boot failed despite 3 retries

It appears that the wl1271 driver is attempting to write the firmware to the wl1271 chip, but it's failing.

When I issue "ifup wlan0" and use a scope to probe the pins, I see the WLAN enable pin go high, I see pulses on the SDIO clock pin, and I see pulses on the four SDIO data lines, so it appears the driver is trying to communicate with the chip.

What MMC port are you using?  Double check your pin mux for all the MMC pins by doing a 'cat' on the related pins in /sys/kernel/debug/omap_mux.  It could be that one of your SDIO data lines is configured for the wrong mode.

 
Where is the chip id 0x66666666 coming from? Is that just a default value the driver reports when it can't read the chip?

I'm not sure about the  0x66666666, but the -84 error is -EILSEQ (illegal byte sequence).  You may want to debug the actual cause of the error by looking at the HSMMC driver  (drivers/mmc/host/omap_hsmmc.c).  If you have dynamic debugging enabled, you could display the dev_dbg() calls, or just insert printk() statements yourself.  In omap_hsmmc_do_irq(), the interrupt handler checks the state of the STAT register.  This tells you whether there was a CRC error on the bus.  See the AM335x TRM 18.5.1.19 for details.
 

Is there a way to turn on verbose debugging in the Wl1271 driver so I can get better debugging information?

The WL12xx driver does have a wl12xx_debug_level module parameter that you can use:

modprobe wl12xx debug_level=0xffffffff

Check out /sys/kernel/debug/ieee80211/phy0/wl12xx as well.
 

Any ideas about what might be wrong would be appreciated.

Thanks,
Tim

PS I'm using the TiWi-R2 transceiver chip from LS Research, which has a WL1271 under the hood.

--
 
 

Tim M

unread,
Oct 3, 2012, 3:35:51 PM10/3/12
to beagl...@googlegroups.com
Guys,

My TiWi-R2 chip is still not working with my Beaglebone. I have some question about timing and clocks.

In file board-am335xevm.c I'm setting the to board_ref_clock to 38.4 Mhz, as follows:

struct wl12xx_platform_data am335xevm_wlan_data = {
    .irq = OMAP_GPIO_IRQ(AM335XEVM_WLAN_IRQ_GPIO),
    .board_ref_clock = WL12XX_REFCLOCK_38_XTAL, /* 38.4Mhz */
};

Here are some structs:

/* Reference clock values */
enum {
        WL12XX_REFCLOCK_19      = 0, /* 19.2 MHz */
        WL12XX_REFCLOCK_26      = 1, /* 26 MHz */
        WL12XX_REFCLOCK_38      = 2, /* 38.4 MHz */
        WL12XX_REFCLOCK_52      = 3, /* 52 MHz */
        WL12XX_REFCLOCK_38_XTAL = 4, /* 38.4 MHz, XTAL */
        WL12XX_REFCLOCK_26_XTAL = 5, /* 26 MHz, XTAL */
};

struct wl12xx_platform_data {
        void (*set_power)(bool enable);
        /* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */
        int irq;
        bool use_eeprom;
        int board_ref_clock;
        int board_tcxo_clock;
        unsigned long platform_quirks;
        int bt_enable_gpio;
        int wlan_enable_gpio;
};

I have a few questions.

What is board_ref_clock? Is this the frequency of the SDIO_CLK going to the TiWi chip?

What is board_tcxo_clock? I don't set this to anything? Should I?

How does WL12XX_REFCLOCK_38_XTAL differ from WL12XX_REFCLOCK_38?

And finally, what is use_eeprom? I don't set this to anything either.

Note : My code in board-am335xevm.c mimics the code that is already in this file supporting the WL1271 chip on the am335x eval board.

Thanks for your help,
Tim M

Tim M

unread,
Oct 17, 2012, 1:02:45 PM10/17/12
to beagl...@googlegroups.com

Hello, thanks for the help so far. I've read plenty of info on this forum, the TI forum, and the TI wiki. I think I have the code in my arch/arm/mach-omap2/board-am335xevm.c file correctly updated. I think I'm setting the SDIO pin mux correctly, as well as WLAN_EN, WLAN_IRQ, BT_EN, etc.

However, I just can't get my beaglebone working with the TiWi-R2 chip. I've posted here some of the syslog output (which includes the kernel messages) hoping that someone can help me debug this.

I edited this syslog output to remove unrelated stuff.

Aug 10 06:22:20 bone2 udevd[73]: timeout: killing '/sbin/modprobe sdio:c00v0097d4076' [218]
Aug 10 06:22:20 bone2 udevd[73]: '/sbin/modprobe sdio:c00v0097d4076' [218] terminated by signal 9 (Killed)
Aug 10 06:22:23 bone2 udevd[59]: worker [74] timeout, kill it
Aug 10 06:22:23 bone2 udevd[59]: seq 777 '/devices/platform/omap/omap_hsmmc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:2' killed
Aug 10 06:22:23 bone2 connmand[227]: connmand[227]: wlan0 {create} index 3 type 1 <ETHER>
Aug 10 06:22:23 bone2 kernel: ieee80211 phy0: Failed to initialize wep: -2
Aug 10 06:22:23 bone2 kernel: wl1271: loaded
Aug 10 06:22:23 bone2 udevd[59]: worker [74] terminated by signal 9 (Killed)
Aug 10 06:22:23 bone2 connmand[227]: wlan0 {create} index 3 type 1 <ETHER>
Aug 10 06:22:23 bone2 connmand[227]: wlan0 {update} flags 4098 <DOWN>
Aug 10 06:22:23 bone2 connmand[227]: wlan0 {newlink} index 3 address DE:AD:BE:EF:00:00 mtu 1500
Aug 10 06:22:23 bone2 connmand[227]: wlan0 {newlink} index 3 operstate 2 <DOWN>
Aug 10 06:22:23 bone2 connmand[227]: Adding interface wlan0 [ wifi ]
Aug 10 06:22:23 bone2 connmand[227]: connmand[227]: wlan0 {update} flags 4098 <DOWN>
Aug 10 06:22:23 bone2 connmand[227]: connmand[227]: wlan0 {newlink} index 3 address DE:AD:BE:EF:00:00 mtu 1500
Aug 10 06:22:23 bone2 connmand[227]: connmand[227]: wlan0 {newlink} index 3 operstate 2 <DOWN>
Aug 10 06:22:23 bone2 connmand[227]: connmand[227]: Adding interface wlan0 [ wifi ]
Aug 10 06:22:23 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 06:22:23 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 06:22:24 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 06:22:24 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 06:22:24 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 06:22:24 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 06:22:24 bone2 kernel: wl1271: ERROR firmware boot failed despite 3 retries
Aug 10 06:22:25 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 06:22:25 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 06:22:25 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 06:22:25 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 06:22:26 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 06:22:26 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 06:22:26 bone2 kernel: wl1271: ERROR firmware boot failed despite 3 retries
Aug 10 06:22:26 bone2 connmand[227]: ** (connmand:227): CRITICAL **: error fi.w1.wpa_supplicant1.UnknownError

Here I turned on debugging, and issued ifdown wlan0 followed by ifup wlan0. I got the following from syslog.
Some of the following are my debug statements in the kernel code.

Aug 10 07:04:34 bone2 wpa_supplicant[311]: Libgcrypt warning: missing initialization - please fix the application
Aug 10 07:04:35 bone2 kernel: In wl12xx_set_power, slot (0), on (1), vdd (21)...
Aug 10 07:04:35 bone2 kernel: RIT: A: Error is -110, IRQ Status is 0x18000
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 30 00                                      ..0.
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 88 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: RIT: B: Error is -84, IRQ Status is 0x208003
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: cc cc cc cc                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 07:04:36 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 07:04:36 bone2 kernel: In wl12xx_set_power, slot (0), on (0), vdd (0)...
Aug 10 07:04:36 bone2 kernel: In wl12xx_set_power, slot (0), on (1), vdd (21)...
Aug 10 07:04:36 bone2 kernel: RIT: A: Error is -110, IRQ Status is 0x18000
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 30 00                                      ..0.
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 88 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:36 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:38 bone2 kernel: RIT: B: Error is -84, IRQ Status is 0x208003
Aug 10 07:04:38 bone2 kernel: wl1271: data: 00000000: cc cc cc cc                                      ....
Aug 10 07:04:38 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 07:04:38 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 07:04:38 bone2 kernel: In wl12xx_set_power, slot (0), on (0), vdd (0)...
Aug 10 07:04:38 bone2 kernel: In wl12xx_set_power, slot (0), on (1), vdd (21)...
Aug 10 07:04:38 bone2 kernel: RIT: A: Error is -110, IRQ Status is 0x18000
Aug 10 07:04:38 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:38 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:38 bone2 kernel: wl1271: data: 00000000: 00 00 30 00                                      ..0.
Aug 10 07:04:38 bone2 kernel: wl1271: data: 00000000: 00 88 00 00                                      ....
Aug 10 07:04:38 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:38 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:38 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:39 bone2 kernel: RIT: B: Error is -84, IRQ Status is 0x208003
Aug 10 07:04:40 bone2 kernel: wl1271: data: 00000000: cc cc cc cc                                      ....
Aug 10 07:04:40 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 07:04:40 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 07:04:40 bone2 kernel: In wl12xx_set_power, slot (0), on (0), vdd (0)...
Aug 10 07:04:40 bone2 kernel: wl1271: ERROR firmware boot failed despite 3 retries
Aug 10 07:04:41 bone2 kernel: In wl12xx_set_power, slot (0), on (1), vdd (21)...
Aug 10 07:04:41 bone2 kernel: RIT: A: Error is -110, IRQ Status is 0x18000
Aug 10 07:04:41 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:41 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:41 bone2 kernel: wl1271: data: 00000000: 00 00 30 00                                      ..0.
Aug 10 07:04:41 bone2 kernel: wl1271: data: 00000000: 00 88 00 00                                      ....
Aug 10 07:04:41 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:41 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:41 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:43 bone2 kernel: RIT: B: Error is -84, IRQ Status is 0x208003
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: cc cc cc cc                                      ....
Aug 10 07:04:43 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 07:04:43 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 07:04:43 bone2 kernel: In wl12xx_set_power, slot (0), on (0), vdd (0)...
Aug 10 07:04:43 bone2 kernel: In wl12xx_set_power, slot (0), on (1), vdd (21)...
Aug 10 07:04:43 bone2 kernel: RIT: A: Error is -110, IRQ Status is 0x18000
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: 00 00 30 00                                      ..0.
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: 00 88 00 00                                      ....
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:43 bone2 kernel: RIT: B: Error is -84, IRQ Status is 0x208003
Aug 10 07:04:43 bone2 kernel: wl1271: data: 00000000: cc cc cc cc                                      ....
Aug 10 07:04:43 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 07:04:43 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 07:04:43 bone2 kernel: In wl12xx_set_power, slot (0), on (0), vdd (0)...
Aug 10 07:04:43 bone2 kernel: In wl12xx_set_power, slot (0), on (1), vdd (21)...
Aug 10 07:04:43 bone2 kernel: RIT: A: Error is -110, IRQ Status is 0x18000
Aug 10 07:04:44 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:44 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:44 bone2 kernel: wl1271: data: 00000000: 00 00 30 00                                      ..0.
Aug 10 07:04:44 bone2 kernel: wl1271: data: 00000000: 00 88 00 00                                      ....
Aug 10 07:04:44 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:44 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:44 bone2 kernel: wl1271: data: 00000000: 00 00 00 00                                      ....
Aug 10 07:04:45 bone2 kernel: RIT: B: Error is -84, IRQ Status is 0x208003
Aug 10 07:04:45 bone2 kernel: wl1271: data: 00000000: cc cc cc cc                                      ....
Aug 10 07:04:45 bone2 kernel: wl1271: ERROR sdio read failed (-84)
Aug 10 07:04:45 bone2 kernel: wl1271: WARNING unsupported chip id: 0xcccccccc
Aug 10 07:04:45 bone2 kernel: In wl12xx_set_power, slot (0), on (0), vdd (0)...
Aug 10 07:04:45 bone2 kernel: wl1271: ERROR firmware boot failed despite 3 retries

root@bone2:~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr D4:94:A1:2B:89:10 
          inet addr:129.21.92.155  Bcast:129.21.92.255  Mask:255.255.255.0
          inet6 addr: fe80::d694:a1ff:fe2b:8910/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1459 errors:0 dropped:277 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:165843 (161.9 KiB)  TX bytes:8403 (8.2 KiB)

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr DE:AD:BE:EF:00:00 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Notes:

udevd is killing something related to SDIO

The wl1271 driver is trying several times to communicate with the TiWi chip but fails with error -84

ifconfig -a shows wlan0 has address DE:AD:BE:EF:00:00

Any help would be appreciated. I've been trying to get my beaglebone working with the TiWi-R2 chip for weeks.

Maxim Podbereznyy

unread,
Oct 19, 2012, 4:07:39 AM10/19/12
to beagl...@googlegroups.com
I use TXS0108 for level shifting between AM35 and Tiwi-R2, although the IRQ line is shifted separately by SN74LVC1T45

2012/10/19 AndrewTaneGlen <andrewt...@gmail.com>
Hi Tim,

This might seem a bit left field, but there are specific voltage requirements for the SDIO on the TiWi-R2 chip - it needs to be run at 1V8. There are 6 different I/O banks on the AM335x... in the beagle bone, each with their own power feeds from the power supply chip. The beaglebone layout currently has all I/O banks supplied with 3V3 which obviously presents us with a serious issue in terms of getting SDIO comms to work with the TiWi chip. I think one of the major challenges faced in getting the beaglebone wifi cape production ready is/has been finding a way to successfully level-shift the 3V3 from the main processor to 1V8 on the TiWi - although by the sounds of it they have this figured out and are about to release it. For our own design we've set the power feed to the SDIO port to 1V8 in order to avoid this issue, although we're currently on a lead time of around a month and a half to get our own pcb populated and ready to go, so I am planning on getting a cape as soon as they are available to at least get some kind of proof of concept going asap.

In terms of your own cape design it sounds like you may need to find out how this level shifting has been achieved on the soon to be released cape - or just wait for the cape and go from there - I imagine they won't release the schematic till it's rolling off the production line.

Let us know if you have any luck in the mean time - we're certainly in the same boat, but haven't any hardware to get stuck on yet :)


Regards,
Andrew.

--
 
 

Tim M

unread,
Oct 19, 2012, 9:26:02 AM10/19/12
to beagl...@googlegroups.com

Thanks for your input guys. We are using a TXS0108 level shifter on all of the SDIO signals (SDIO_DAT0 thru SDIO_DAT4, SDIO_CMD, SDIO_CLK) as well as WLAN_EN, WLAN_IRQ, BT_EN and the four HCI bluetooth signals (TX, RX, CTS, RTS). I've checked the voltage levels and they are 3.3V on the AM3359 side and 1.8V on the TiWi chip side of the level shifter, as expected, so I don't see anything obviously wrong. However, something is wrong as shown by my output posted above!

I've been doing a lot of googling and it seems the TiWi chip is sensitive to the impedance level and trace length on the four data lines. Has anyone had trouble, and how did you solve it?

I've heard that there is a beaglebone wifi cape in development that uses the TiWi-R2 chip. Is this cape being designed by TI or LSR or someone else?

BTW, I'm using a Beaglebone rev A3, and I'm using MMC1 for my SDIO connection to the TiWi.I'm sure I have the pin mux correct.

mmc1_dat1, P8 pin number 13, mux mode 2
mmc1_dat2, P8 pin number 14, mux mode 2
mmc1_dat3, P8 pin number 17, mux mode 2
mmc1_dat0, P8 pin number 19, mux mode 2
mmc1_cmd, P8 pin number 20, mux mode 2
mmc1_clk, P8 pin number 21, mux mode 2

Thanks,
Tim

Maxim Podbereznyy

unread,
Oct 21, 2012, 11:24:42 AM10/21/12
to beagl...@googlegroups.com

Pin mux is probably fine, but about pullups and directions? They matter too

19.10.2012 17:26 пользователь "Tim M" <timlori...@hotmail.com> написал:
--
 
 

Tim M

unread,
Nov 7, 2012, 9:14:37 AM11/7/12
to beagl...@googlegroups.com

I read somewhere today while doing google searches that the Beaglebone rev A3 (which I am using) has an error in the P8 header. mmc1_dat3 is supposed to be routed to header P8 pin 17 but is actually routed to Pin 16! This could be my problem as I'm using mmc1_dat3. Here is my pin mux:


mmc1_dat1, P8 pin number 13, mux mode 2
mmc1_dat2, P8 pin number 14, mux mode 2
mmc1_dat3, P8 pin number 17, mux mode 2
mmc1_dat0, P8 pin number 19, mux mode 2
mmc1_cmd, P8 pin number 20, mux mode 2
mmc1_clk, P8 pin number 21, mux mode 2

I looked for "errata" at beagleboard.org on this subject but found no mention of this problem. Can anyone verify this pin 16 / pin 17 error on header P8 on Beaglebone rev A3?

Thanks,
Tim

Andrew Bradford

unread,
Nov 7, 2012, 10:34:32 AM11/7/12
to beagl...@googlegroups.com, timlori...@hotmail.com
Older versions of the SRM did have wrong information for some of the
mmc1 lines. For an up-to-date easy-to-read version of the P8/P9
pinout, see my github[1].

[1]:https://github.com/bradfa/beaglebone_pinmux_tables

Those are accurate, as far as I know. More accurate even than the A6
SRM :)

I run mmc1 for an SD card with no issue on a custom cape.

-Andrew
Reply all
Reply to author
Forward
0 new messages