[Bug 4580] New: Firmware loading error
bugzilla at busybox.net
bugzilla at busybox.net
Wed Dec 7 09:13:48 UTC 2011
https://bugs.busybox.net/show_bug.cgi?id=4580
Summary: Firmware loading error
Product: Busybox
Version: 1.19.x
Platform: Other
OS/Version: Linux
Status: NEW
Severity: minor
Priority: P5
Component: Networking
AssignedTo: unassigned at busybox.net
ReportedBy: marco_cantu_ranzani at libero.it
CC: busybox-cvs at busybox.net
Estimated Hours: 0.0
Created attachment 3848
--> https://bugs.busybox.net/attachment.cgi?id=3848
HOTPLUG.LOG
Busybox 1.19.2
Architecture ARM 920T cpu (s3c2440) - mini2440
Kernel 2.6.32.2 (sources provided by arm9.net)
Kernel cross compiled with arm-gcc 4.3.2 (sources provided by arm9.net)
(arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2008q3-72) 4.3.2)
Busybox cross compiled by buildroot 2011.08 (arm-gcc 4.6.1, uclibc 0.9.32)
I've find a lot of forum that discuss about this problem,
but I not find a solution for this system!
in /lib/ I have
firmware/rt2870.bin
hotplug/firmware/rt2870.bin
and I also try to
echo "/sbin/mdev" > /proc/sys/kernel/hotplug
Thanks in advance!
************************************* BUG? *********************************
-------------------------
usb 1-1: default language 0x0409
usb 1-1: udev 3, busnum 1, minor = 2
usb 1-1: New USB device found, idVendor=148f, idProduct=3070
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: 802.11 n WLAN
usb 1-1: Manufacturer: Ralink
usb 1-1: SerialNumber: 1.0
usb 1-1: uevent
usb 1-1: usb_probe_device
usb 1-1: configuration #1 chosen from 1 choice
usb 1-1: adding 1-1:1.0 (config #1, interface 0)
usb 1-1:1.0: uevent
usbserial_generic 1-1:1.0: usb_probe_interface
usbserial_generic 1-1:1.0: usb_probe_interface - got id
rt2800usb 1-1:1.0: usb_probe_interface
rt2800usb 1-1:1.0: usb_probe_interface - got id
phy1: Selected rate control algorithm 'minstrel'
Registered led device: rt2800usb-phy1::radio
Registered led device: rt2800usb-phy1::assoc
Registered led device: rt2800usb-phy1::quality
drivers/usb/core/inode.c: creating file '003'
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0002
s3c2410-ohci s3c2410-ohci:
s3c2410_hub_control(c3a66000,0xa300,0x0000,0x0001,c3a55da0,0004)
rt2800usb 1-1:1.0: firmware: requesting rt2870.bin
phy1 -> rt2x00lib_request_firmware: Error - Failed to request Firmware.
*********************************************************************************************
Kernel .config:
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.32.2
# Wed Nov 9 17:40:50 2011
#
CONFIG_ARM=y
CONFIG_HAVE_PWM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
CONFIG_NO_IOPORT=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_ARCH_HAS_CPUFREQ=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_CONSTRUCTORS=y
...
#
# GCOV-based kernel profiling
#
# CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_BLOCK=y
# CONFIG_LBDAF is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
...
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
# CONFIG_DEVTMPFS is not set
# CONFIG_STANDALONE is not set
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_TESTS is not set
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_AFS_PARTS is not set
# CONFIG_MTD_AR7_PARTS is not set
...
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_AX88796 is not set
# CONFIG_SMC91X is not set
CONFIG_DM9000=y
CONFIG_DM9000_DEBUGLEVEL=4
# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
# CONFIG_ETHOC is not set
# CONFIG_SMC911X is not set
# CONFIG_SMSC911X is not set
# CONFIG_DNET is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
# CONFIG_B44 is not set
# CONFIG_KS8842 is not set
# CONFIG_KS8851_MLL is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
CONFIG_WLAN=y
# CONFIG_WLAN_PRE80211 is not set
CONFIG_WLAN_80211=y
# CONFIG_LIBERTAS is not set
# CONFIG_LIBERTAS_THINFIRM is not set
CONFIG_AT76C50X_USB=m
CONFIG_USB_ZD1201=m
CONFIG_USB_NET_RNDIS_WLAN=m
CONFIG_RTL8187=m
# CONFIG_MAC80211_HWSIM is not set
# CONFIG_P54_COMMON is not set
CONFIG_ATH_COMMON=m
CONFIG_AR9170_USB=m
# CONFIG_HOSTAP is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
CONFIG_RT2X00=m
CONFIG_RT2500USB=m
CONFIG_RT73USB=m
CONFIG_RT2800USB=m
CONFIG_RT2X00_LIB_USB=m
CONFIG_RT2X00_LIB=m
CONFIG_RT2X00_LIB_HT=y
CONFIG_RT2X00_LIB_FIRMWARE=y
CONFIG_RT2X00_LIB_CRYPTO=y
CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
# CONFIG_WL12XX is not set
# CONFIG_IWM is not set
...
---------------- in util-linux/medv.c ??? -----------------------
at line 481
/* For the full gory details, see linux/Documentation/firmware_class/README
*
* Firmware loading works like this:
* - kernel sets FIRMWARE env var
* - userspace checks /lib/firmware/$FIRMWARE
* - userspace waits for /sys/$DEVPATH/loading to appear
* - userspace writes "1" to /sys/$DEVPATH/loading
* - userspace copies /lib/firmware/$FIRMWARE into /sys/$DEVPATH/data
* - userspace writes "0" (worked) or "-1" (failed) to /sys/$DEVPATH/loading
* - kernel loads firmware into device
*/
static void load_firmware(const char *firmware, const char *sysfs_path)
{
int cnt;
int firmware_fd, loading_fd, data_fd;
/* check for /lib/firmware/$FIRMWARE */
xchdir("/lib/firmware");
firmware_fd = xopen(firmware, O_RDONLY);
/* in case we goto out ... */
data_fd = -1;
/* check for /sys/$DEVPATH/loading ... give 30 seconds to appear */
xchdir(sysfs_path);
for (cnt = 0; cnt < 30; ++cnt) {
loading_fd = open("loading", O_WRONLY);
if (loading_fd != -1)
goto loading;
sleep(1);
}
goto out;
loading:
/* tell kernel we're loading by "echo 1 > /sys/$DEVPATH/loading" */
if (full_write(loading_fd, "1", 1) != 1)
goto out;
/* load firmware into /sys/$DEVPATH/data */
data_fd = open("data", O_WRONLY);
if (data_fd == -1)
goto out;
cnt = bb_copyfd_eof(firmware_fd, data_fd);
/* tell kernel result by "echo [0|-1] > /sys/$DEVPATH/loading" */
if (cnt > 0)
full_write(loading_fd, "0", 1);
else
full_write(loading_fd, "-1", 2);
out:
if (ENABLE_FEATURE_CLEAN_UP) {
close(firmware_fd);
close(loading_fd);
close(data_fd);
}
}
--------------------------------- HOTPLUG env logging
-----------------------------------------
echo "/home/myscript.sh" > /proc/sys/kernel/hotplug
myscript.sh
-------------------
#!/bin/sh
set >> /home/hotplug.log
exit 0
-------------------
-------------- hotplug.log -----------------------------------------
ACTION=add
BASH=/bin/sh
BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="1")
ACTION=add
BASH=/bin/sh
BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="1")
BASH_ARGV=([0]="usb")
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/home/myscript.sh")
BASH_VERSINFO=([0]="4" [1]="1" [2]="9" [3]="2" [4]="release"
[5]="arm-unknown-linux-gnu")
BASH_VERSION='4.1.9(2)-release'
BUSNUM=001
DEVICE=/proc/bus/usb/001/003
DEVNAME=bus/usb/001/003
DEVNUM=003
DEVPATH=/devices/platform/s3c2410-ohci/usb1/1-1
DEVTYPE=usb_device
DIRSTACK=()
EUID=0
GROUPS=()
HOME=/
HOSTNAME=mini2440
HOSTTYPE=arm
IFS='
'
MACHTYPE=arm-unknown-linux-gnu
MAJOR=189
MINOR=2
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/sbin:/bin:/usr/sbin:/usr/bin
POSIXLY_CORRECT=y
PPID=5
PRODUCT=148f/3070/101
PS4='+ '
PWD=/
SEQNUM=391
SHELL=/bin/sh
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=1
SUBSYSTEM=usb
TERM=dumb
TYPE=0/0/0
UID=0
_=/bin/sh
BASH_ARGV=([0]="usb")
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/home/myscript.sh")
BASH_VERSINFO=([0]="4" [1]="1" [2]="9" [3]="2" [4]="release"
[5]="arm-unknown-linux-gnu")
BASH_VERSION='4.1.9(2)-release'
DEVICE=/proc/bus/usb/001/003
DEVPATH=/devices/platform/s3c2410-ohci/usb1/1-1/1-1:1.0
DEVTYPE=usb_interface
DIRSTACK=()
EUID=0
GROUPS=()
HOME=/
HOSTNAME=mini2440
HOSTTYPE=arm
IFS='
'
INTERFACE=255/255/255
MACHTYPE=arm-unknown-linux-gnu
MODALIAS=usb:v148Fp3070d0101dc00dsc00dp00icFFiscFFipFF
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/sbin:/bin:/usr/sbin:/usr/bin
POSIXLY_CORRECT=y
PPID=5
PRODUCT=148f/3070/101
PS4='+ '
PWD=/
SEQNUM=392
SHELL=/bin/sh
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=1
SUBSYSTEM=usb
TERM=dumb
TYPE=0/0/0
UID=0
_=/bin/sh
... MORE IN ATTACHMENT
--
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the busybox-cvs
mailing list