Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have an HP Pavillion Touch 14-N009LA with a Ralink RT3290 wireless card running Debian Jessie with kernel 3.12.9-1. This distro looks as if the wireless drivers were included, and from another post here it would look like it should work with the rt2800pci module, which is listed by lsmod and loads fine. However, whenever I issue ifconfig wlan0 up, I get SIOCSIFFLAGS: No such file or directory. I tried using the kernel.org compatibility sources from the previously linked post and they didn't work, after installing them I can't load the module and I must uninstall them and use the Debian-bundled module. I tried compiling the driver's sources from this other thread and they don't compile. I'm not sure if downloading the binary archive linked on that thread will be a good idea given that that one is for Ubuntu and I'm running Debian Testing. I tried to apply this fix here for Arch/Gentoo but couldn't find the right file.

Following the third link I managed to diagnose this situation a little, this is what I get from running dmesg right after attempting to bring up wlan0:

[ 4374.981101] ieee80211 phy1: rt2x00lib_request_firmware: Info - Loading firmware file 'rt3290.bin'
[ 4374.981132] rt2800pci 0000:02:00.0: firmware: failed to load rt3290.bin (-2)

So basically, it looks like I have to get the drivers to compile. I have build-essential and linux-headers-amd64 for my running version of the kernel, tried with HAS_WPA_SUPPLICANT=y and HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y as well as with only HAS_NATIVE_WPA_SUPPLICANT_SUPPORT on, and this is what I get:

black@rockshooter:~/WA/DPO_RT3290_LinuxSTA_V2600_20120508$ make
make -C tools
make[1]: Entering directory `/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/tools'
gcc -g bin2h.c -o bin2h
make[1]: Leaving directory `/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/tools'
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/tools/bin2h
cp -f os/linux/Makefile.6 /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/Makefile
make -C /lib/modules/3.12-1-amd64/build SUBDIRS=/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux modules
make[1]: Entering directory `/usr/src/linux-headers-3.12-1-amd64'
  CC [M]  /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.o
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c: In function ‘duplicate_pkt’:
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:508:3: warning: passing argument 1 of ‘memmove’ makes pointer from integer without a cast [enabled by default]
   NdisMoveMemory(skb->tail, pHeader802_3, HdrLen);
   ^
In file included from /usr/src/linux-headers-3.12-1-common/arch/x86/include/asm/string.h:4:0,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/string.h:17,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/dynamic_debug.h:111,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/kernel.h:14,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/cache.h:4,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/time.h:4,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/stat.h:18,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/module.h:10,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/os/rt_linux.h:18,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/rtmp_os.h:42,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/rtmp_comm.h:56,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:35:
/usr/src/linux-headers-3.12-1-common/arch/x86/include/asm/string_64.h:58:7: note: expected ‘void *’ but argument is of type ‘sk_buff_data_t’
 void *memmove(void *dest, const void *src, size_t count);
       ^
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:510:3: warning: passing argument 1 of ‘memmove’ makes pointer from integer without a cast [enabled by default]
   NdisMoveMemory(skb->tail, pData, DataSize);
   ^
In file included from /usr/src/linux-headers-3.12-1-common/arch/x86/include/asm/string.h:4:0,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/string.h:17,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/dynamic_debug.h:111,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/kernel.h:14,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/cache.h:4,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/time.h:4,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/stat.h:18,
                 from /usr/src/linux-headers-3.12-1-common/include/linux/module.h:10,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/os/rt_linux.h:18,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/rtmp_os.h:42,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/rtmp_comm.h:56,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:35:
/usr/src/linux-headers-3.12-1-common/arch/x86/include/asm/string_64.h:58:7: note: expected ‘void *’ but argument is of type ‘sk_buff_data_t’
 void *memmove(void *dest, const void *src, size_t count);
       ^
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c: In function ‘ClonePacket’:
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:662:20: warning: assignment makes integer from pointer without a cast [enabled by default]
   pClonedPkt->tail = pClonedPkt->data + pClonedPkt->len;
                    ^
In file included from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/rtmp_os.h:42:0,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/rtmp_comm.h:56,
                 from /home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:35:
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c: In function ‘RtmpOsPktInit’:
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/include/os/rt_linux.h:992:34: warning: assignment makes integer from pointer without a cast [enabled by default]
   ((RTPKT_TO_OSPKT(_pkt))->tail) = (PUCHAR)((_start) + (_len))
                                  ^
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:681:2: note: in expansion of macro ‘SET_OS_PKT_DATATAIL’
  SET_OS_PKT_DATATAIL(pRxPkt, pData, DataSize);
  ^
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c: In function ‘wlan_802_11_to_802_3_packet’:
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:708:15: warning: assignment makes integer from pointer without a cast [enabled by default]
  pOSPkt->tail = pOSPkt->data + pOSPkt->len;
               ^
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c: In function ‘__RtmpOSFSInfoChange’:
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:1136:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
   pOSFSInfo->fsuid = current_fsuid();
                    ^
/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.c:1137:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’
   pOSFSInfo->fsgid = current_fsgid();
                    ^
make[4]: *** [/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux/../../os/linux/rt_linux.o] Error 1
make[3]: *** [_module_/home/black/WA/DPO_RT3290_LinuxSTA_V2600_20120508/os/linux] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.12-1-amd64'
make: *** [LINUX] Error 2
share|improve this question
up vote 5 down vote accepted

You need the ralink firmware, https://packages.debian.org/jessie/firmware-ralink

# apt-get install firmware-ralink

share|improve this answer
1  
Tried it and it worked like a charm, thanks. Didn't think the solution was so simple ^^U; – RAKK Mar 13 '14 at 17:01

So... this is really bizarre, and I can't guarantee it will work, but it worked for me and I wanted to put this information somewhere that a lot of people would end up seeing it and have something to try if they still can't get their rt3290 working.

I couldn't get the rt3290 working for the life of me under Debian Squeeze, no matter what I tried, installing the firmware-ralink package, trying to compile the drivers manually (to no avail because of missing dependencies that cause problems if forced into the system), etc.

I bought a TP-Link wireless dongle, confirmed to work with Linux, so that I could have wireless on my laptop again.

I installed these drivers: http://www.tp-link.us/res/down/soft/TL-WN725N_V2_150911.zip

... and now my rt3290 works perfectly...? Quelle surprise!

Yeah. I don't get it either. I don't really have a lot of data with which to back up my answer other than the fact that my dongle is sitting unplugged next to me and I am connected with my rt3290, but if someone else 'solved' the problem this way, I would have loved to have seen this bizarre solution somewhere while I was struggling. So if there's anyone out there still having the same troubles I am, I hope you find this answer by way of google and give the TP-Link drivers a try.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.