rt61: Could not load firmware! (is firmware file installed?)

Live forum: http://rt2x00.serialmonkey.com/viewtopic.php?t=5141

howardyu

26-12-2008 09:31:14

Hi all

I tested the rt61 driver on my system. My system is IXP Big-endian platform.
kernel is 2.6.15.7 and PCI wireless card is EDIMAX EW-7128g.I alos put three bin file to /lib/firmware directory.
when I load rt61.ko and it occurs that "rt61 1.1.0 CVS 2008122519 http//rt2x00.serialmonkey.com
rt61 Could not load firmware! (is firmware file installed?)

I also get the udevd v17 release and cross-compile that and uplink to my IXP board.
And let it perform in background.
It still can't load firmware.
I
Does any ieda to solve that?

Thanks for helping.

Best Regards,
Howard

howardyu

26-12-2008 09:35:07

Hi all

I perform dmesg command,following is message
========================================
rt61 1.1.0 CVS 2008122519 http//rt2x00.serialmonkey.com
bus pci add driver rt61
pci Matched Device 00000009.0 with Driver rt61
PCI enabling device 00000009.0 (0140 -> 0142)
CLASS registering class device ID = '00000009.0'
class_hotplug - name = 00000009.0
class->hotplug() returned -19
class_hotplug - name = 00000009.0
CLASS Unregistering class device. ID = '00000009.0'
class_hotplug - name = 00000009.0
device class '00000009.0' release.
rt61 Could not load firmware! (is firmware file installed?)
bound device '00000009.0' to driver 'rt61'
pci Bound Device 00000009.0 to Driver rt61
bus pci remove driver rt61
rt61 1.1.0 CVS 2008122519 http//rt2x00.serialmonkey.com
bus pci add driver rt61
pci Matched Device 00000009.0 with Driver rt61
CLASS registering class device ID = '00000009.0'
class_hotplug - name = 00000009.0
class->hotplug() returned -19
class_hotplug - name = 00000009.0
CLASS Unregistering class device. ID = '00000009.0'
class_hotplug - name = 00000009.0
device class '00000009.0' release.
rt61 Could not load firmware! (is firmware file installed?)
bound device '00000009.0' to driver 'rt61'
pci Bound Device 00000009.0 to Driver rt61
bus pci remove driver rt61
rt61 1.1.0 CVS 2008122519 http//rt2x00.serialmonkey.com
bus pci add driver rt61
pci Matched Device 00000009.0 with Driver rt61
CLASS registering class device ID = '00000009.0'
class_hotplug - name = 00000009.0
class->hotplug() returned -19
class_hotplug - name = 00000009.0
CLASS Unregistering class device. ID = '00000009.0'
class_hotplug - name = 00000009.0
device class '00000009.0' release.
rt61 Could not load firmware! (is firmware file installed?)
bound device '00000009.0' to driver 'rt61'
pci Bound Device 00000009.0 to Driver rt61

Best Regards,
Howard

howardyu

31-12-2008 02:27:47

Hi all

Does anyone have solution about this issue?

Thanks for helping.

Best Regards,
Howard

jkom

31-12-2008 06:24:25

I'm having almost exactly the same problem. Same EW-7128g card and firmware issue, but I'm trying to make it work with the latest Damn Small Linux release (based on kernel 2.4.31). I hope that the solution is just a matter of moving the firmware .bins to the proper directory, assuming /lib/firmware is not the right one, but I'm starting to think that it may not be so simple. Check out the readme section on firmware directories. Maybe yours is supposed to be /lib/firmware/<kernel version> as in the example.

If you find a solution, please post it here. I'll keep researching myself and do the same. Hopefully someone here will enlighten us soon...

jkom

31-12-2008 06:34:06

Also, you may want to consider using the driver from the Edimax website. I may use that if it looks like I'll never see the serial monkey driver working. The Edimax driver was working fine for me, but it looks like wpa supplicant is needed for wpa security. I haven't figured out how to configure the build for that yet. (

IvD

31-12-2008 15:59:44

You could also use the search button on this forum to see how other people managed to get the firmware loader working correctly. Espcially the udev part is important.

jkom

31-12-2008 21:39:04

Of course, I've tried searching, but most of the firmware loading discussions that I find are inconclusive or do not pertain to me.

viewtopic.php?f=7&t=4772&p=29438&hilit=firmware+load#p29438
viewtopic.php?f=7&t=4913&p=30196&hilit=firmware+load#p30196
viewtopic.php?f=7&t=4285&hilit=firmware+load&start=15
viewtopic.php?f=8&t=5108&p=31393&hilit=firmware+load#p31393
viewtopic.php?f=8&t=5078&p=31224&hilit=firmware+load#p31224

One of the above concludes with a this reply from IvD
"In those other posts possible solutions where also provided.
* Is /lib/firmware the right firmware folder on your distro
* Is udev/hotplug configured for firmware"

I don't think /lib/firmware is the right directory for my distro, and I can't believe I'm having so much trouble finding the right directory. Damn Small Linux uses hotplug, but I don't know how to configure it (I will read about it soon though).

Howard As I was searching the forums again I found the topic below. It looks like it might help you.
viewtopic.php?f=7&t=4829&p=29763&hilit=firmware+load#p29763

jkom

01-01-2009 01:03:01

Finally managed to get it working in Damn Small Linux. Here's what I did

1. I downloaded a missing firmware.agent from sourceforge (included in the hotplug source) and copied it to /etc/hotplug/
2. chmod 755 firmware.agent (make it executable)
3. create and move the firmware to /usr/lib/hotplug/firmware or modify the firmware.agent to point to /lib/firmware (default install)

Hopefully I didn't do something prior to the above 3 steps that was also necessary. I doubt that I did.

howardyu

02-01-2009 03:00:53

Hi jkom

Thanks for your information.
I also put the firmware to /lib/firmware/2.6.15 directory.
It still can't find the firmware to load.
In 2.6.15 kernel configuration,I turned on support hot plug option.
In kernel 2.4 the kernel used hot plug and in kernel 2.6 it use udev.
udev is for dynamic load/unload device.

I will try the driver from Edimax and let you know the test result.
Thanks for helping again.

Best Regards,
Howard

jkom

02-01-2009 20:49:45

Did you read over this entire topic? viewtopic.php?f=7&t=4829&p=29763&hilit=firmware+load
I didn't read it very carefully, but the situation looks very similar to yours, and there is a solution.

I don't know much about udev, but are you sure that either udev or hotplug know to look in /lib/firmware. And for hotplug, did you make sure you have the /etc/hotplug/firmware.agent? Not sure what the udev equivalents would be.

The Edimax driver did work fairly easily for me. However, I did have to fix one compile error and edit the makefile a little, so if you have similar problems that you can't work through, just ask. I was not content with that driver because it does not support WPA. WEP works fine, but I want more security than that. If you already have wpa supplicant on your system, that shouldn't be a problem for you though. I tried to install it, but the configuration instructions were not very good.

howardyu

05-01-2009 08:50:50

Hi Jkom

I have enable the hot plug option in kernel.
But my kernel version is 2.6.15.7 not 2.4 series.
I also put default.hotplug to /etc/hotplug.d/default directory and
hotplug.functions and firmware.agent to /etc/hotplug/ directory both.
I also put hotplug to /sbin/.

And I still get message
=======================
rt61 1.1.0 CVS 2008122519 http//rt2x00.serialmonkey.com
bus pci add driver rt61
pci Matched Device 00000009.0 with Driver rt61
CLASS registering class device ID = '00000009.0'
class_hotplug - name = 00000009.0
class->hotplug() returned -19
class_hotplug - name = 00000009.0
CLASS Unregistering class device. ID = '00000009.0'
class_hotplug - name = 00000009.0
device class '00000009.0' release.
rt61 Could not load firmware! (is firmware file installed?)
bound device '00000009.0' to driver 'rt61'
pci Bound Device 00000009.0 to Driver rt61

I have no idea about "class->hotplug() return -19"?

Does I miss some configuration for hotplug package?

Best Regards,
Howard

howardyu

05-01-2009 12:40:17

Hi Jkom

Could you give me Makefile of driver download from Edimax web site - the 2007_1210_RT61_Linux_STA_v1.1.2.0 version.
I want to test this version and see it works or not.
Thanks for helping.

Best Regards,
Howard

jkom

06-01-2009 07:54:55

Of course, the makefile is included in the download from Edimax. I think I know what you're getting at though. Is it that you haven't downloaded the Edimax driver and want to try this makefile with the serialmonkey driver? I tried that myself on a long shot with the 2.4 kernel, but it didn't work (not surprised). It may be a viable option with some modifications, but I haven't compared the makefiles carefully enough to see if it's possible. Anyway, I zipped the 2.6 makefile and attached it (Edimax has separate makefiles for 2.4 and 2.6). Please clarify what you're using it for. I'm curious.

Also, have you read that post with the big-endian discussion yet? There's a patch there that you'll probably need?

jkom

06-01-2009 08:39:34



Does I miss some configuration for hotplug package?

Best Regards,
Howard[/quotelmxmhiu1]

Check your firmware.agent for the following

# directory of the firmware files
FIRMWARE_DIR=/usr/lib/hotplug/firmware

FIRMWARE_DIR either needs to be changed to /lib/firmware or your firmware in that directory has to be moved to whatever directory is specified by FIRMWARE_DIR

howardyu

06-01-2009 09:24:10

Hi Jkom

No.I just want to use the driver download from Edimax web site and try.
I tested the Makefile you give me,there have some error.

make[2] *** [/home/rt2x00/2007_1210_RT61_Linux_STA_v1.1.2.0/Module/rtmp_wext.o] Error 1
make[1] *** [_module_/home/rt2x00/2007_1210_RT61_Linux_STA_v1.1.2.0/Module] Error 2
I can't make rt.ko successfully.
Do you make the ko successfully?

I want to make rt61.ko use CROSS_COMPILE and use board kernel 2.6.15 in my PC.
But I can't set the CROSS_COMPILE option in this Makefile.

I also trace the code in serialmonkey driver - rt61.
In rtmp_main.c,the NICLoadFirmware routine is failure and always report the message
"rt61 Could not load firmware". I also modify the firmare.agent file in /etc/hotplug directory.
I chaged the FIRMWARE_DIR=/lib/firmware and still can't load firmware successfully.

Best Regards,
Howard

jkom

06-01-2009 17:52:45

If you've downloaded the driver source from Edimax and think that you need the makefile from me, then there's something else wrong. The makefile should be in the following directory in the source zip file from Edimax (http//www.edimax.com/en/support_detail ... &pl2_id=44). Use that one in its proper directory.

__Linux Driver__\RT61\2007_1210_RT61_Linux_STA_v1.1.2.0\Module

biban

07-01-2009 07:21:26

Try use latest 2.6.28 kernel ... I downloaded latest git release, it supports very well rt61 cards (and it also have patches for supporting rt61 in ap mode using hostapd of course).
I use this Edimax card on PIII/450Mhz system running Slackware 10.1 and after 1 week of hard work I was able to make this machine Acces Point for my local network using this card.
It works very well on 2.4.35,2.4.37 kernells because until I get this card I used kernel 2.4.35 and 2.4.37 and I instaled drivers very well (without Master mode support of course).
There is a lot of documentation around, that may help you ... I recommend you to download latest rt61 drivers from http//rt2x00.serialmonkey.com/wiki/index.php/Downloads
I also downloaded latest pci.ids file and put into my machine to display correct information of my pci devices.
I you think I can help you ask me and I'll give all information I have about this.
Excuse my poor english.

howardyu

09-01-2009 06:27:44

Hi Biban

Thanks for information.
It works fine on my laptop PC - kernel 2.6.9.5-ELsmp.
But it have error in my IXP embedded board - kernel 2.6.15.
Following is the message "class->hotplug() returned -19"
I checked the source code in kernel.
In /drivers/base/Class.c,
function - static int class_hotplug(struct kset *kset, struct kobject *kobj, char **envp,
int num_envp, char *buffer, int buffer_size)
In code
=====================================
if (class_dev->hotplug) {
/* have the class device specific function add its stuff */
retval = class_dev->hotplug(class_dev, envp, num_envp,
buffer, buffer_size);
if (retval)
pr_debug("class_dev->hotplug() returned %d\n", retval);
} else if (class_dev->class->hotplug) {
/* have the class specific function add its stuff */
retval = class_dev->class->hotplug[/color3v3cc6bw](class_dev, envp, num_envp,
buffer, buffer_size);
if (retval)
[b3v3cc6bw]pr_debug("class->hotplug() returned %d\n", retval);[/b3v3cc6bw]
}
============================================
I found out the class->hotpulg occurred error and let request_firmware routine can't load firmware successfully from user space to kernel.
In my kernel I also turn on the support hotplug options.I have no idea about the reason.
If anyone have solution,please help me.
Thanks a lot.

Best Regards,
Howard

howardyu

09-01-2009 08:57:36

Hi all

I will try udev and let you know the result.

Best Regards,
Howard

howardyu

15-01-2009 03:52:13

Hi all

I downloaded udev-100 from kernel.org and re-compile for arm platform.
I got 9 file,udev,udevd,udevstart,udevsettle,udevinfo ..ect.
I put udev.conf to /ect/udev directory and udev.rules to /etc/udev/rule.d.
I performed udevd and udevstart and insmod rt61.ko.
It still can't find device,class->hotplug always return -19,"no such device" return value.
Does anyone have solution.

I also try the MadWifi driver for atheros chipset card.I have another problems,ath5k still not ready now.

Best Regards,
Howard