Tiny Core Linux

dCore Import Debian Packages to Mountable SCE extensions => dCore X86 => dCore x86 Imported Extensions => Topic started by: ctor on October 18, 2016, 03:34:01 PM

Title: wireless fails in dCore-xenial and dCore-trusty
Post by: ctor on October 18, 2016, 03:34:01 PM
Let me start with this  -- wireless works flawlessly under tinycore 7.2. It fails in dCore-xenial and dCore-trusty -- a failed load of the firmware.

Most my testing has been with dCore-xenial because tinycore 7.2 uses the same Linux kernel, 4.2.9.  I have take both the firmware files and iwlwifi driver from tinycore 7.2 and located them in the Linux directory structure identically to tinycore 7.2. For example, iwlwifi-7260-15.ucode is located in: /usr/local/lib/firmware. And the iwlwifi driver is in: /usr/local/lib/modules/4.2.9-tinycore/kernel/drivers/net/wireless/iwlwifi.

I have also tested with the appropriate prebuilt extensions for dCore-xenial and have tried to follow the spirit of the instructions linked below. The result are the same -- a failed load of the firmware.

http://wiki.tinycorelinux.net/dcore:hp-compaq_tc1000#ethernet (http://wiki.tinycorelinux.net/dcore:hp-compaq_tc1000#ethernet)

dmesg error log contents:
Code: [Select]
Intel(R) Wireless WiFi driver for Linux                                                                                                                                                                                         
Copyright(c) 2003- 2015 Intel Corporation                                                                                                                                                                                       
iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-7260-15.ucode failed with error -2                                                                                                                                       
iwlwifi 0000:01:00.0: Falling back to user helper                                                                                                                                                                               
iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-7260-14.ucode failed with error -2                                                                                                                                       
iwlwifi 0000:01:00.0: Falling back to user helper                                                                                                                                                                               
iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-7260-13.ucode failed with error -2                                                                                                                                       
iwlwifi 0000:01:00.0: Falling back to user helper                                                                                                                                                                               
iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-7260-12.ucode failed with error -2                                                                                                                                       
iwlwifi 0000:01:00.0: Falling back to user helper                                                                                                                                                                               
iwlwifi 0000:01:00.0: request for firmware file 'iwlwifi-7260-12.ucode' failed.                                                                                                                                                 
iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-7260-11.ucode failed with error -2                                                                                                                                       
iwlwifi 0000:01:00.0: Falling back to user helper                                                                                                                                                                               
iwlwifi 0000:01:00.0: request for firmware file 'iwlwifi-7260-11.ucode' failed.                                                                                                                                                 
iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-7260-10.ucode failed with error -2                                                                                                                                       
iwlwifi 0000:01:00.0: Falling back to user helper                                                                                                                                                                               
iwlwifi 0000:01:00.0: request for firmware file 'iwlwifi-7260-10.ucode' failed.                                                                                                                                                 
iwlwifi 0000:01:00.0: no suitable firmware found!                                                                                                                                                                               

Hardware specifications:
Code: [Select]
lspci
01:00.0 Network controller: Intel Corporation Wireless 7260 (rev bb)

Questions:

1) Are there any additional places to check for logging results besides dmesg? I found no additional logging files in /var/log. Are there any additional methods I could use to increase logging under dCore-xenial?

2) Does the dCore Linux kernel use the identical Linux configuration file as tinycore 7.2 for compiling?

3) I get different results when I use the modinfo command on the same file containing the iwlwifi driver under dCore-xenial when compared to tinycore 7.2. Under tinycore 7.2, the modinfo command  shows this string: "firmware:       iwlwifi-7260-12.ucode". The string is missing under dCore-xenial. The modinfo command is part of busybox  -- busybox version in dCore-xenial is 1.20 while it is 1.24 in tinycore 7.2. Any know issues with the older busybox version?

4) I have not yet investigated the differences between the udev sub-system in dCore-xenial and tinycore 7.2. Would that be worthwhile?

5) The "Falling back to user helper" message and some personal internet research implies there are two mechanisms for loading firmware -- udev sub-system and directly by the Linux kernel. The research has also indicated that other Linux distributions have had trouble with loading firmware for the iwlwifi driver. Any know issues with firmware loading in Linux kernel 4.2.9?

Thank you in advance.

regards,
ctor
Title: Re: wireless fails in dCore-xenial and dCore-trusty
Post by: Jason W on October 18, 2016, 05:29:44 PM
A few quick answers to the questions:

1. Use the "syslog" boot code to create /var/log/messages, same as with Core.

2. Config is slightly different to allow for systemd.  Compare the two configs found below, dCore config is the second one, the window shows the only difference.  dCore kernels are compiled on the version of initial release of Core that shares the same kernel version.  So modules need to be built using that version of Core.  The current 4.2.9-tinycore kernel used in dCore was built on Core 7.0.

http://tinycorelinux.net/7.x/x86/release/src/kernel/config-4.2.9-tinycore
http://tinycorelinux.net/dCore/x86/import/src/kernel-4.2.9/config-4.2.9-tinycore-devtmpfs

Code: [Select]
--- config-4.2.9-tinycore
+++ config-4.2.9-tinycore-devtmpfs
@@ -1400,7 +1400,7 @@
 #
 CONFIG_UEVENT_HELPER=y
 CONFIG_UEVENT_HELPER_PATH=""
-# CONFIG_DEVTMPFS is not set
+CONFIG_DEVTMPFS=y
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y

3. Busybox versions are different, but should not be an issue in dCore.  Will update one day, but I don't think it is causing an issue now.

4. Udev, except for that found in dCore-wheezy, is part of systemd.  I would first try to get this working without delving into that.

5. Firmware loads fine with me, and we have the same file /lib/udev/firmware.sh to allow for /usr/local/lib/firmware as well as /lib/firmware to be used.  But if you would, place the firmware in /lib/firmware to see if there is a bug in that script regarding dCore.

Hope this helps.
Title: Re: wireless fails in dCore-xenial and dCore-trusty
Post by: ctor on November 01, 2016, 09:14:45 AM
JasonW,

Thank you for your immediate and informative response. I was able to resolve the firmware loading issue on my computer for both dCore-xenial and dCore-trusty.

What I found:

1) TC 7.2, dCore-xenial and dCore-trusty all successfully load firmware from /lib/firmware.

2) TC 7.2 can successfully load firmware from /usr/local/lib/firmware -- neither dCore can.

3) TC 7.2's kernel loads the firmware directly for both firmware directories  -- udev/firmware.sh is never called.

4) dCore-xenial's kernel does not succeed with the /usr/local/lib/firmware directory -- it calls upon the udev/firmware.sh subsystem. Firmware.sh fails. dCore-trusty was not tested but I suspect similar results.

5) A very minor issue -- dCore-xenial's firmware.sh logging call failed to write in to /var/log/messages because /usr/bin/logger did not exist. TC 7.2 succeeded because it has a soft link from /usr/bin/logger to /bb/logger.

It is only a sample size of one but the /lib/firmware directory seems to be directory of choice as you had indicated. Further, the kernel seems to be the firmware loading mechanism of choice.

I investigated firmware.sh some by adding logging messages to it. In my particular case, the script stopped logging (and probably exception-ed) on the cat line in firmware.sh. I don't fully understand the kernel communication mechanism that firmware.sh employs.

Thank you again JasonW -- I much appreciate your help (and the help of the very active Tiny Core forum members).

regards,
ctor
Title: Re: wireless fails in dCore-xenial and dCore-trusty
Post by: Jason W on November 01, 2016, 11:21:33 AM
ctor - Thanks for your findings on this.   I will look into solving the logging issue.