Bug#797779: brcmfmac4330-sdio.txt from OpenElec fixes the issue

2015-09-02 Thread Stefan Lippers-Hollmann
Hi

On 2015-09-02, Rainer Dorsch wrote:
> Hi Stefan,
> 
> I copied the debian-arm list, because this should be an issue which is 
> present 
> on almost any ARM based SoC and there might exist solutions for other SoCs 
> already.

It's not really arm specific, as this particular SDIO based wlan chipset
is used on multiple architectures (including many windows 8.x based Intel
Atom tablets).

> On Wednesday 02 September 2015 19:37:13 Stefan Lippers-Hollmann wrote:
> > On 2015-09-02, Rainer Dorsch wrote:
[...]
> Are you saying that I opened the bugreport against the wrong package or that 
> this is not a bug at all?

As far as I see it, this is not a /software/ bug and not actionable 
from within Debian, the data blob in question can only be provided
by the OEM/ systems integrator manufacturing the devboard or the 
vendor producing the wlan card in question (e.g. AMPAK for the AP6120
wlan/ BT daughterboard using the Broadcom BCM4329 SDIO chipset found 
on many armhf devboards). It is calibration data for your particular 
wlan card and not a generic firmware image. 

At best (and this is pretty questionable as well) you could create a 
dedicated firmware image providing brcmfmac4329-sdio.txt for each
particular devboard, conflicting with all other providers of this
file.

If I were the Debian maintainer for firmware-brcm80211, I'd see no 
other option than to close this bug - likewise I don't think that it 
can be re-assigned to any other package in Debian.

On more traditional PCI/ PCIe or USB wlan cards, this type of 
calibration data is typically stored in a small EEPROM chip, together
with the device's MAC address, but in the embedded space, vendors try
to save the last cent and reuse other kinds of (independent) storage.

- on x86 Atom Baytrail-T tablets (many of which use this exact, 
  bcm4329, wlan chipset), this calibration data is usually stored in 
  the mainboard firmware (vulgo BIOS) and exposed to the Windows driver 
  as UEFI (nvram-) variable; brcmfmac does not look there on its own.
- on Atheros based (mips) routers, the calibration data usually goes
  into a dedicated mtd partition of the main flash ("ART", aka Atheros
  Radio Test), here it is unique (based on the OEM calibration) to each
  specific router (or at least small batches of the production).
- on most armhf devices originally shipping with Android, it is usually
  presented as firmware file shipped in the original Android system
  partition (e.g. /system/etc/wifi/nvram_net.txt) and then used by the 
  bcmhd driver on Android, respectively its mainline counterpart and 
  successor brcmfmac via /lib/firmware/brcm/brcmfmac4329-sdio.txt.
  you need to extract /system/etc/wifi/nvram_net.txt from your original
  Android image and copy it to /lib/firmware/brcm/brcmfmac4329-sdio.txt
  or ask the manufacturer of your board for it.

> Doesn't on an ARM system the device tree file contain embedded device 
> specific 
> information, which is shipped with the kernel itself? And would this txt file 
> not fit perfectly in this category of information?

I'm not a specialist on device tree syntax, but I'd guess that it's a 
bit too much information to be injected via DT.

> How is this issue addressed for other ARM SoCs?

Many ARM devboards go a simpler route, by simply using a USB based
daughterboard (which includes all these implementation details in an
EEPROM of the USB daughterboard itself). Android smartphones, which 
are more likely to use SDIO based wlan cards (and bcmhd as its driver),
store it as /system/etc/wifi/nvram_net.txt and alternative firmwares 
either need to take care of not overwriting it, or to ship it 
themselves. 

The few devboards using SDIO based BCM4329 wlan cards either provide
nvram_net.txt/ brcmfmac4329-sdio.txt somewhere (which is specific to
their particular device, respectively production batch) or punt the
task of extracting it from the original Android based firmware to the
user.

See the situation for x86 tablets and mips routers above.

Regards
Stefan Lippers-Hollmann


pgpPI4PWVduKq.pgp
Description: Digitale Signatur von OpenPGP


Bug#797779: brcmfmac4330-sdio.txt from OpenElec fixes the issue

2015-09-02 Thread Rainer Dorsch
Hi Stefan,

I copied the debian-arm list, because this should be an issue which is present 
on almost any ARM based SoC and there might exist solutions for other SoCs 
already.

On Wednesday 02 September 2015 19:37:13 Stefan Lippers-Hollmann wrote:
> Hi
> 
> On 2015-09-02, Rainer Dorsch wrote:
> > Hi,
> > 
> > I copied brcmfmac4330-sdio.txt from OpenElec
> > 
> > https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfm
> > ac4330-sdio.txt
> > 
> > to /lib/firmware/brcm
> > 
> > which fixes the issue
> 
> [...]
> 
> brcmfmac4330-sdio.txt is OEM, respectively even device specific[1],
> nothing that would be generic enough (for all bcm4330 devices) to be
> shipped by Debian's firmware packages.
> 
> On x86 systems this blob is typically provided in a UEFI variable (but not
> found automatically by the kernel, so you need to copy it from the UEFI
> variable to /lib/firmware). On embedded devices it needs to be provided by
> the manufacturer (not Broadcom, but the OEM vendor) of your wlan card
> (respectively the devboard).
> 
> Regards
>   Stefan Lippers-Hollmann
> 
> [1]   These blobs contain calibration data, regulatory domain settings
>   and similar information, which is highly specific to your exact
>   device. Using data from a different device would make it run out
>   of its specifications (getting you in trouble with FCC, ETSI,
>   etc.) and could even physically damage your device.

Are you saying that I opened the bugreport against the wrong package or that 
this is not a bug at all?

Doesn't on an ARM system the device tree file contain embedded device specific 
information, which is shipped with the kernel itself? And would this txt file 
not fit perfectly in this category of information?

How is this issue addressed for other ARM SoCs?

Thanks
Rainer

-- 
Rainer Dorsch
http://bokomoko.de/



Bug#797779: brcmfmac4330-sdio.txt from OpenElec fixes the issue

2015-09-02 Thread Stefan Lippers-Hollmann
Hi

On 2015-09-02, Rainer Dorsch wrote:
> Hi,
> 
> I copied brcmfmac4330-sdio.txt from OpenElec
> 
> https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac4330-sdio.txt
> 
> to /lib/firmware/brcm
> 
> which fixes the issue
[...]

brcmfmac4330-sdio.txt is OEM, respectively even device specific[1], 
nothing that would be generic enough (for all bcm4330 devices) to be 
shipped by Debian's firmware packages. 

On x86 systems this blob is typically provided in a UEFI variable (but not
found automatically by the kernel, so you need to copy it from the UEFI 
variable to /lib/firmware). On embedded devices it needs to be provided by 
the manufacturer (not Broadcom, but the OEM vendor) of your wlan card 
(respectively the devboard).

Regards
Stefan Lippers-Hollmann

[1] These blobs contain calibration data, regulatory domain settings
and similar information, which is highly specific to your exact 
device. Using data from a different device would make it run out
of its specifications (getting you in trouble with FCC, ETSI, 
etc.) and could even physically damage your device.


pgpB3yQFdQkGm.pgp
Description: Digitale Signatur von OpenPGP


Bug#797779: brcmfmac4330-sdio.txt from OpenElec fixes the issue

2015-09-02 Thread Rainer Dorsch
Hi,

I copied brcmfmac4330-sdio.txt from OpenElec

https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac4330-sdio.txt

to /lib/firmware/brcm

which fixes the issue

rd@home:~$ dmesg |grep brcm
[2.092917] brcm_reg: disabling
[6.786725] usbcore: registered new interface driver brcmfmac
[6.846286] brcmfmac_sdio mmc0:0001:1: firmware: direct-loading firmware 
brcm/brcmfmac4330-sdio.bin
[6.879810] brcmfmac_sdio mmc0:0001:1: firmware: direct-loading firmware 
brcm/brcmfmac4330-sdio.txt
[7.225901] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Oct 25 
2011 19:34:12 version 5.90.125.104
[7.258702] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
[   11.484505] brcmfmac: brcmf_add_if: ERROR: netdev:wlan0 already exists
[   11.491109] brcmfmac: brcmf_add_if: ignore IF event
rd@home:~$ /sbin/ifconfig -a
eth1  Link encap:Ethernet  Hardware Adresse d0:63:b4:00:2b:ac  
  inet Adresse:192.168.178.29  Bcast:192.168.178.255  
Maske:255.255.255.0
  inet6-Adresse: fd00::d263:b4ff:fe00:2bac/64 
Gültigkeitsbereich:Global
  inet6-Adresse: fe80::d263:b4ff:fe00:2bac/64 
Gültigkeitsbereich:Verbindung
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
  RX packets:6800 errors:0 dropped:0 overruns:0 frame:0
  TX packets:5344 errors:0 dropped:0 overruns:0 carrier:0
  Kollisionen:0 Sendewarteschlangenlänge:1000 
  RX bytes:1065692 (1.0 MiB)  TX bytes:5224223 (4.9 MiB)

loLink encap:Lokale Schleife  
  inet Adresse:127.0.0.1  Maske:255.0.0.0
  inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
  UP LOOPBACK RUNNING  MTU:65536  Metrik:1
  RX packets:56 errors:0 dropped:0 overruns:0 frame:0
  TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
  Kollisionen:0 Sendewarteschlangenlänge:0 
  RX bytes:5946 (5.8 KiB)  TX bytes:5946 (5.8 KiB)

wlan0 Link encap:Ethernet  Hardware Adresse b8:5a:f7:82:aa:c2  
  UP BROADCAST MULTICAST  MTU:1500  Metrik:1
  RX packets:490 errors:0 dropped:490 overruns:0 frame:0
  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  Kollisionen:0 Sendewarteschlangenlänge:1000 
  RX bytes:233292 (227.8 KiB)  TX bytes:0 (0.0 B)

rd@home:~$ 

Thanks,
Rainer

-- 
Rainer Dorsch
http://bokomoko.de/