How does the kernel find and initialize (wifi) network interface devices?
up vote
0
down vote
favorite
When initializing the system how does the kernel, or the Berkeley Sockets system identify and initialize network interface devices? On my Raspberry Pi Zero W, the wifi chip is connected as a device attached to the sdhost adapter on the SOC.
I'm guessing that when the SDhost device is initialized, its device driver probes each child device connected to the SDhost -- the pi has 1) an actual SDCARD and 2) the wifi chip. Somehow the Sockets code must find out that the device connected to the SDhost is actually a wifi device.
Building a custom kernel was my downfall. The build was clean. My version 4.14.83+ build of raspbian from github.com/raspberrypi/linux can't find the wlan0 device (I was cross compiling from Ubuntu using gcc-linaro-arm-linux-gnueabihf-raspbian-x64). The stock kernel is version 4.14.71+ (which they cross compiled with crosstool-ng-1.22.0-88-g8460611)
I've found in the kernel code drivers/net/hosts/bcm2835.c and bcm2835-sdhost.c, hoping that they would contain code that handles initialization of devices on the SDhost.
Specifics: The pi zero w uses a Broadcom BCM2538 system on chip (SOC) with and sdcard host adapter in it. This connects by the SDIO interface to a Cypress CYW43455 wifi chip(I think) and the microSD socket.
On a system with a kernel that can find the wifi, 'ls -l /sys/class/net' shows:
wlan0 -> ../../devices/platform/soc/20300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0
that the wlan0 is on the MMC (SD) host on the SOC.
So, what piece of code looks through the devices (device-tree?) and figures out that it is a network device -- or how does the Sockets code find the device? If I can find that code, then I should be able to see why it doesn't find the wifi adapter.
linux-kernel wifi raspberry-pi
New contributor
add a comment |
up vote
0
down vote
favorite
When initializing the system how does the kernel, or the Berkeley Sockets system identify and initialize network interface devices? On my Raspberry Pi Zero W, the wifi chip is connected as a device attached to the sdhost adapter on the SOC.
I'm guessing that when the SDhost device is initialized, its device driver probes each child device connected to the SDhost -- the pi has 1) an actual SDCARD and 2) the wifi chip. Somehow the Sockets code must find out that the device connected to the SDhost is actually a wifi device.
Building a custom kernel was my downfall. The build was clean. My version 4.14.83+ build of raspbian from github.com/raspberrypi/linux can't find the wlan0 device (I was cross compiling from Ubuntu using gcc-linaro-arm-linux-gnueabihf-raspbian-x64). The stock kernel is version 4.14.71+ (which they cross compiled with crosstool-ng-1.22.0-88-g8460611)
I've found in the kernel code drivers/net/hosts/bcm2835.c and bcm2835-sdhost.c, hoping that they would contain code that handles initialization of devices on the SDhost.
Specifics: The pi zero w uses a Broadcom BCM2538 system on chip (SOC) with and sdcard host adapter in it. This connects by the SDIO interface to a Cypress CYW43455 wifi chip(I think) and the microSD socket.
On a system with a kernel that can find the wifi, 'ls -l /sys/class/net' shows:
wlan0 -> ../../devices/platform/soc/20300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0
that the wlan0 is on the MMC (SD) host on the SOC.
So, what piece of code looks through the devices (device-tree?) and figures out that it is a network device -- or how does the Sockets code find the device? If I can find that code, then I should be able to see why it doesn't find the wifi adapter.
linux-kernel wifi raspberry-pi
New contributor
Possible duplicate unix.stackexchange.com/questions/90027/…
– Panther
Nov 27 at 3:18
I don't own a Zero W, but I can tell you how to find out: look throughdmesg
after boot on the kernel that can find the wifi, and note which module produces WLAN-related messages. Googling finds this issue, if I read this correctly,brcmfmac
is the responsible module, and you need the correct firmware for it to work. Also note that "Berkeley sockets" is a red herring; that's a software layer way above the driver layer which is giving you trouble.
– dirkt
Nov 27 at 7:49
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
When initializing the system how does the kernel, or the Berkeley Sockets system identify and initialize network interface devices? On my Raspberry Pi Zero W, the wifi chip is connected as a device attached to the sdhost adapter on the SOC.
I'm guessing that when the SDhost device is initialized, its device driver probes each child device connected to the SDhost -- the pi has 1) an actual SDCARD and 2) the wifi chip. Somehow the Sockets code must find out that the device connected to the SDhost is actually a wifi device.
Building a custom kernel was my downfall. The build was clean. My version 4.14.83+ build of raspbian from github.com/raspberrypi/linux can't find the wlan0 device (I was cross compiling from Ubuntu using gcc-linaro-arm-linux-gnueabihf-raspbian-x64). The stock kernel is version 4.14.71+ (which they cross compiled with crosstool-ng-1.22.0-88-g8460611)
I've found in the kernel code drivers/net/hosts/bcm2835.c and bcm2835-sdhost.c, hoping that they would contain code that handles initialization of devices on the SDhost.
Specifics: The pi zero w uses a Broadcom BCM2538 system on chip (SOC) with and sdcard host adapter in it. This connects by the SDIO interface to a Cypress CYW43455 wifi chip(I think) and the microSD socket.
On a system with a kernel that can find the wifi, 'ls -l /sys/class/net' shows:
wlan0 -> ../../devices/platform/soc/20300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0
that the wlan0 is on the MMC (SD) host on the SOC.
So, what piece of code looks through the devices (device-tree?) and figures out that it is a network device -- or how does the Sockets code find the device? If I can find that code, then I should be able to see why it doesn't find the wifi adapter.
linux-kernel wifi raspberry-pi
New contributor
When initializing the system how does the kernel, or the Berkeley Sockets system identify and initialize network interface devices? On my Raspberry Pi Zero W, the wifi chip is connected as a device attached to the sdhost adapter on the SOC.
I'm guessing that when the SDhost device is initialized, its device driver probes each child device connected to the SDhost -- the pi has 1) an actual SDCARD and 2) the wifi chip. Somehow the Sockets code must find out that the device connected to the SDhost is actually a wifi device.
Building a custom kernel was my downfall. The build was clean. My version 4.14.83+ build of raspbian from github.com/raspberrypi/linux can't find the wlan0 device (I was cross compiling from Ubuntu using gcc-linaro-arm-linux-gnueabihf-raspbian-x64). The stock kernel is version 4.14.71+ (which they cross compiled with crosstool-ng-1.22.0-88-g8460611)
I've found in the kernel code drivers/net/hosts/bcm2835.c and bcm2835-sdhost.c, hoping that they would contain code that handles initialization of devices on the SDhost.
Specifics: The pi zero w uses a Broadcom BCM2538 system on chip (SOC) with and sdcard host adapter in it. This connects by the SDIO interface to a Cypress CYW43455 wifi chip(I think) and the microSD socket.
On a system with a kernel that can find the wifi, 'ls -l /sys/class/net' shows:
wlan0 -> ../../devices/platform/soc/20300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0
that the wlan0 is on the MMC (SD) host on the SOC.
So, what piece of code looks through the devices (device-tree?) and figures out that it is a network device -- or how does the Sockets code find the device? If I can find that code, then I should be able to see why it doesn't find the wifi adapter.
linux-kernel wifi raspberry-pi
linux-kernel wifi raspberry-pi
New contributor
New contributor
New contributor
asked Nov 27 at 3:05
Ribo
1055
1055
New contributor
New contributor
Possible duplicate unix.stackexchange.com/questions/90027/…
– Panther
Nov 27 at 3:18
I don't own a Zero W, but I can tell you how to find out: look throughdmesg
after boot on the kernel that can find the wifi, and note which module produces WLAN-related messages. Googling finds this issue, if I read this correctly,brcmfmac
is the responsible module, and you need the correct firmware for it to work. Also note that "Berkeley sockets" is a red herring; that's a software layer way above the driver layer which is giving you trouble.
– dirkt
Nov 27 at 7:49
add a comment |
Possible duplicate unix.stackexchange.com/questions/90027/…
– Panther
Nov 27 at 3:18
I don't own a Zero W, but I can tell you how to find out: look throughdmesg
after boot on the kernel that can find the wifi, and note which module produces WLAN-related messages. Googling finds this issue, if I read this correctly,brcmfmac
is the responsible module, and you need the correct firmware for it to work. Also note that "Berkeley sockets" is a red herring; that's a software layer way above the driver layer which is giving you trouble.
– dirkt
Nov 27 at 7:49
Possible duplicate unix.stackexchange.com/questions/90027/…
– Panther
Nov 27 at 3:18
Possible duplicate unix.stackexchange.com/questions/90027/…
– Panther
Nov 27 at 3:18
I don't own a Zero W, but I can tell you how to find out: look through
dmesg
after boot on the kernel that can find the wifi, and note which module produces WLAN-related messages. Googling finds this issue, if I read this correctly, brcmfmac
is the responsible module, and you need the correct firmware for it to work. Also note that "Berkeley sockets" is a red herring; that's a software layer way above the driver layer which is giving you trouble.– dirkt
Nov 27 at 7:49
I don't own a Zero W, but I can tell you how to find out: look through
dmesg
after boot on the kernel that can find the wifi, and note which module produces WLAN-related messages. Googling finds this issue, if I read this correctly, brcmfmac
is the responsible module, and you need the correct firmware for it to work. Also note that "Berkeley sockets" is a red herring; that's a software layer way above the driver layer which is giving you trouble.– dirkt
Nov 27 at 7:49
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Ribo is a new contributor. Be nice, and check out our Code of Conduct.
Ribo is a new contributor. Be nice, and check out our Code of Conduct.
Ribo is a new contributor. Be nice, and check out our Code of Conduct.
Ribo is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f484347%2fhow-does-the-kernel-find-and-initialize-wifi-network-interface-devices%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Possible duplicate unix.stackexchange.com/questions/90027/…
– Panther
Nov 27 at 3:18
I don't own a Zero W, but I can tell you how to find out: look through
dmesg
after boot on the kernel that can find the wifi, and note which module produces WLAN-related messages. Googling finds this issue, if I read this correctly,brcmfmac
is the responsible module, and you need the correct firmware for it to work. Also note that "Berkeley sockets" is a red herring; that's a software layer way above the driver layer which is giving you trouble.– dirkt
Nov 27 at 7:49