Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm working on a wireless router and have been set a task to support some wifi cards, namely the Ralink RT5390 and RT2571.

The RT2571 card works perfectly well, I can set it up as an access point, or connect to other access points. I can switch between these two modes and there are no problems.

Then when I try with a new RT5390, the first time I boot everything works fine. But then if I reboot the router the RT5390 won't show up as an access point, or won't connect to another access point. This functionality never returns. All the processes which should be running (hostapd or wpa_supplicant) are running as they should be, but it seems like the card isn't transmitting properly.

If I run iw dev scan <ifname of RT5390> I get no results, but no errors either, the return value of iw is 0. In startup I can see that the drivers and firmware file have been loaded properly too, with no errors, and the udev rules I'm using to rename the network interface are also working fine.

I'm using a buildroot Linux image with Kernel 3.12.9. I've compiled in the driver module rt2800usb - as this is the underlying chip on the RT5390. I've also added the appropriate firmware file to /lib/firmware.

I've checked that power management is set to off, and also that tx power is set to 20 dbm. I'm running out of ideas for what could be causing this and would appreciate any suggestions.

share|improve this question

2 Answers 2

According to this page in WikiDevi, https://wikidevi.com/wiki/Ralink_RT5390_Reference_Design, the RT5390 can be driven either by rt2800pci (in backports), or by rt2860sta. It is not clear from what you say whether the driver you are using is identical to, or any different from, that in backports. Perhaps you may wish to check that.

In any case, I would suggest trying the other one, rt2860sta which you may download here, for obvious reasons. Should you need them, you may find the backports here.

The only other (meek) suggestion I have is to load the driver with the parm nohwcrypt set to 1. It is a well-known trick which, occasionally,allows these drivers to work correctly, for no apparent good reason.

share|improve this answer
    
Thanks for your suggestions, I'm going to try compiling in the different driver later, for now I'm trying to add nohwcrypt=1 to the modprobe of rt2800usb. At present the drivers are loaded automatically after a udev trigger (udevadm trigger --parent-match <pci path to device>) is there a way to make sure that when modprobe is triggered this param will be set? –  Kells1986 May 22 at 14:07
    
@Kells1986 Create a file /etc/modprobe/local with the following line: options rtl2800pci nohwcrypt=1. If you want to do it at runtime, sudo modprobe rt2800usb nohwcrypt=1 –  MariusMatutiae May 22 at 15:20
up vote 0 down vote accepted

In the end I solved this problem by finding a newer version of the rt2800.bin firmware file.

The Debian package that I got the firmware file from (ralink-firmware) has the version number 0.36. When I originally downloaded and extracted the package it contained v0.24 of rt2800.bin.

I decided to go through all my steps again to make sure I'd not made any mistakes, so I re-downloaded the debian package - version 0.36 again - and when I extracted it I found that rt2800.bin had been updated to v0.29. Using this version has solved all of my problems.

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.