# Problem mit DHCP und WLAN unter Debian 9.4



## Zeiss (11. Mai 2018)

Hallo zusammen,

ich habe für meinen BananaPRO ein RootFS gebaut und einen Kernel von kernel.org, Version 4.14.39. Soweit funktioniert auch alles, bis auf zwei Sachen.

1. Das eth0 als so konfiguriert:


> auto eth0
> iface eth0 inet dhcp



Aber, beim Hochfahren kriegt das Interface keine IP. Erst das manuelle Ausführen von dhclient weist eine IP-Adresse für eth0 zu...

2. BananaPRO hat ein WLan-Interface, das wird vom Modul brcmfmac unterstützt. Das Modul braucht noch die Firmware, diese bringt das Paket firmware-brcm80211 mit, welches ich installiert habe und die Firmware sind unter /lib/firmware/brcm zu finden. So weit so gut.

Aber, wenn der Kernel gestartet wird, kriege ich diese Fehlermeldung zu sehen:


> [    1.417298] brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43362-sdio.bin for chip 0x00a962(43362) rev 0x000001
> [    1.428350] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43362-sdio.bin failed with error -2



Das error -2 heißt, dass die Datei nicht gefunden wurde, aber sie ist da:


> root@banana:/lib/firmware/brcm# file brcmfmac43362-sdio.bin
> brcmfmac43362-sdio.bin: data
> root@banana:/lib/firmware/brcm#



Ideen?


----------



## Bunkasan (12. Mai 2018)

Da du ja nicht den Standard Debian Kernel verwendest, hast du ein initramfs? Liegt da die Firmware auch drin? Bei der Hardwareinitalisierung ist das Rootfilesystem noch nicht gemountet, dort kann er auch nichts finden. Das Debian initramfs wird normalerweise bei der Installation von Firmware upgedatet. Falls du den Kernel selbst kompilierst, kannst du die Firmware auch direkt mit einbauen.


----------



## Zeiss (12. Mai 2018)

Also, der Stand jetzt:

1. Ist gelöst, ich habe eine etho.conf unter /etc/network/interfaces.d angelegt, damit kam der er nicht klar. Nachdem ich die eth0 und lo direkt in der /etc/network/interfaces definiert habe, kommt auch eth0 sauber hoch....

2. Argh, Du hast natürlich Recht. Der Treiber ist fest im Kernel drin und nicht als Modul, deswegen findet er auch nicht firmware nicht... Ich habe geschaut, wo man die Firmware reinnehmen kann, aber irgendwie nichts gefunden. Weißt Du zufällig, wo es ist? Auf initramfs habe ich jetzt nicht so die Lust, das frisst nur RAM. Oder ich kompiliere den Treiber als Modul und lade es dann nach.


----------



## Bunkasan (12. Mai 2018)

Symbol: EXTRA_FIRMWARE []                                                                                                                   │
 │ Type  : string                                                                                                                                                      │
 │ Prompt: External firmware blobs to build into the kernel binary                                                                                                     │
 │   Location:                                                                                                                                                         │
 │     -> Device Drivers                                                                                                                                               │
 │       -> Generic Driver Options                                                                                                                                     │
 │         -> Userspace firmware loading support (FW_LOADER [=y])                                                                                                      │
 │   Defined at drivers/base/Kconfig:89                                                                                                                                │
 │   Depends on: FW_LOADER [=y]


----------



## Zeiss (13. Mai 2018)

Cool, danke Dir.

Ich habe den brcmfmac und cfg80211 als Module gebaut und installiert.

Beim Laden von brcmfmac erscheint:

```
[ 1839.151991] brcmfmac: F1 signature read @0x18000000=0x1591a962
[ 1839.159301] brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43362-sdio.bin for chip 0x00a962(43362) rev 0x000001
[ 1839.170573] usbcore: registered new interface driver brcmfmac
```

Also, sieht gut aus.

Und dann, lsmod, sagt:

```
root@banana:~# lsmod
Module                  Size  Used by
brcmfmac              245760  0
cfg80211              253952  1 brcmfmac
brcmutil               16384  1 brcmfmac
root@banana:~#
```

Sieht gut aus, würde ich sagen.

Dann, wenn ich ip a eingebe:

```
root@banana:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
    link/can
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 02:d1:05:c0:fa:ab brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.110/24 brd 192.168.2.255 scope global eth0
       valid_lft forever preferred_lft forever
root@banana:~#
```

ist der wlan0 nicht da... 

Fehlt noch etwas?

EDIT: Nun geht es. Es muss noch eine Datei existieren, die genau so heißt, wie die Firmware, nur mit txt am Ende, da werden die Daten zur Firmware hinterlegt. Nachdem sie geladen wurde, erscheint im dmesg das hier:



> [ 4424.623580] brcmfmac: F1 signature read @0x18000000=0x1591a962
> [ 4424.631860] brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43362-sdio.bin for chip 0x00a962(43362) rev 0x000001
> [ 4424.643135] usbcore: registered new interface driver brcmfmac
> [ 4424.849016] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Apr 22 2013 14:50:00 version 5.90.195.89.6 FWID 01-b30a427d



Die letzte Zeile ist interessant und sagt, dass die Firmware geladen wurde.

ip a sagt dann auch:


> root@banana:/lib/firmware/brcm# ip a
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> inet 127.0.0.1/8 scope host lo
> ...


----------

