So it looks like it is a 3071 chipset. And from the code snippet below
it can be seen that for that chipset the rt2800usb wants to load the
second image in a firmware of size 8KiB.
For these chips the rt2800usb needs to load the concatenated second
firmware image from an 8KiB firmware, but natty still comes with the
4KiB rt2870.bin. In 1.53 2870.bin doubles in size to exactly 8KiB. Two
4KiB drivers are concatenated.
In preparation for a SRU we should look if anything formerly working
potentially breaks with the new firmware. Ralink says it is backward
compatible, so older drivers that load the new firmware should be
fine:
The USB drivers in staging have been modified (vs. the drivers from
the Ralink website) to load 4KiB firmware. From looking at the code
they should just take the first half of an 8KiB firmware and ignore
the rest. Nevertheless I would prefer to have a regression test with
RT2860, RT2872 or RT3070 based hardware with a USB driver from staging
and the oneiric 8KiB rt2870.bin. Maybe we can find someone who can do
this. If testing that it might be good to move the other Ralink
firmware files out of /lib/firmware temporarily (or disable them by
renaming) to prove that it loads the 8KiB rt2870.bin (md5:
36c944c3138125605d28c0a3a1338be9) from linux-firmware 1.53.
What follows is just a bunch of stuff I have looked up that might come
in handy for reference:
older kernels have more staging drivers:
lucid: 2.6.32
rt2860sta
rt2870sta <-- usb
rt3070sta <-- usb
rt3090sta
maverick: 2.6.35
rt2860sta
rt2870sta <-- usb
rt3070sta <-- usb
natty: 2.6.38
rt2860sta
rt2870sta <-- usb
Changelog
linux-firmware (1.53) oneiric
has 3 patches about rt2* :
rt2870sta: Use latest firmware for RT3070 and RT3071
rt2860sta: Use latest firmware for RT3090
linux-firmware: rt2800pci: rt2800usb: Firmware update <--
The file we want to replace is the same from lucid to natty:
/lib/firmware/rt2870.bin
md5:e4b60f5bb4980a26cbac32be690451d6
Agreed.
Btw, I have found some output from such a DWA-140 with compat-wireless
with debugging enabled. This prints a much better chip info:
http:// rt2x00. serialmonkey. com/phpBB/ viewtopic. php?f=5& t=6061
> Bus 003 Device 007: ID 07d1:3c0a D-Link System DWA-140 RangeBooster N USB Adapter(rev.B2)
..
> phy1 -> rt2x00_set_chip: Info - Chipset detected - rt: 3071, rf: 0008, rev: 0213.
So it looks like it is a 3071 chipset. And from the code snippet below
it can be seen that for that chipset the rt2800usb wants to load the
second image in a firmware of size 8KiB.
http:// git.kernel. org/?p= linux/kernel/ git/stable/ linux-2. 6.38.y. git;a=blob; f=drivers/ net/wireless/ rt2x00/ rt2800usb. c;h=197a36c05fd af18a294000b9ea e8b5dad2073eea; hb=HEAD rt(rt2x00dev, RT2860) || rt(rt2x00dev, RT2872) || rt(rt2x00dev, RT3070)) {
116 /*
117 * Check which section of the firmware we need.
118 */
119 if (rt2x00_
120 rt2x00_
121 rt2x00_
122 offset = 0;
123 length = 4096;
124 } else {
125 offset = 4096;
126 length = 4096;
127 }
For these chips the rt2800usb needs to load the concatenated second
firmware image from an 8KiB firmware, but natty still comes with the
4KiB rt2870.bin. In 1.53 2870.bin doubles in size to exactly 8KiB. Two
4KiB drivers are concatenated.
In preparation for a SRU we should look if anything formerly working
potentially breaks with the new firmware. Ralink says it is backward
compatible, so older drivers that load the new firmware should be
fine:
http:// rt2x00. serialmonkey. com/pipermail/ users_rt2x00. serialmonkey. com/2011- March/003380. html
Ralink's Shiang Tu says:
We always suggest to use latest firmware, because it's backward
compatible and also has some enhancement, bug fix, or support of new
chip
For rt5390 or newer chips, it shall upgrade the firmware to this
version, or it may malfunction.
The USB drivers in staging have been modified (vs. the drivers from 05d28c0a3a1338b e9) from linux-firmware 1.53.
the Ralink website) to load 4KiB firmware. From looking at the code
they should just take the first half of an 8KiB firmware and ignore
the rest. Nevertheless I would prefer to have a regression test with
RT2860, RT2872 or RT3070 based hardware with a USB driver from staging
and the oneiric 8KiB rt2870.bin. Maybe we can find someone who can do
this. If testing that it might be good to move the other Ralink
firmware files out of /lib/firmware temporarily (or disable them by
renaming) to prove that it loads the 8KiB rt2870.bin (md5:
36c944c31381256
What follows is just a bunch of stuff I have looked up that might come
in handy for reference:
older kernels have more staging drivers:
lucid: 2.6.32
rt2860sta
rt2870sta <-- usb
rt3070sta <-- usb
rt3090sta
maverick: 2.6.35
rt2860sta
rt2870sta <-- usb
rt3070sta <-- usb
natty: 2.6.38
rt2860sta
rt2870sta <-- usb
Changelog
linux-firmware (1.53) oneiric
has 3 patches about rt2* :
rt2870sta: Use latest firmware for RT3070 and RT3071
rt2860sta: Use latest firmware for RT3090
linux-firmware: rt2800pci: rt2800usb: Firmware update <--
The file we want to replace is the same from lucid to natty: rt2870. bin 80a26cbac32be69 0451d6
/lib/firmware/
md5:e4b60f5bb49
current natty release linux-firmware 1.52 a2f8288d9b835f7 87 rt2561.bin d4df36a834915aa 53 rt2561s.bin f39dd61a33b92ad 9b rt2661.bin 83f26bb7dd7339f b3 rt2860.bin 6cbac32be690451 d6 rt2870.bin <-- 4c1e97e80a59d8e df rt3070.bin 282464bd68de9a7 fe rt3071.bin 9cb491bca0dc025 fb rt3090.bin
md5sum rt{2,3}*
99bce75086ea635
2878d5eaa4ff907
9998485bc152cf0
7f55011396eff49
e4b60f5bb4980a2
7c540794d71ad68
faf3eb6379501e4
0efb51d2d3f4be9
current Maverick proposed linux-firmware 1.38.8 a2f8288d9b835f7 87 rt2561.bin d4df36a834915aa 53 rt2561s.bin f39dd61a33b92ad 9b rt2661.bin 83f26bb7dd7339f b3 rt2860.bin 6cbac32be690451 d6 rt2870.bin <-- 4c1e97e80a59d8e df rt3070.bin 282464bd68de9a7 fe rt3071.bin 9cb491bca0dc025 fb rt3090.bin
md5sum rt{2,3}*
99bce75086ea635
2878d5eaa4ff907
9998485bc152cf0
7f55011396eff49
e4b60f5bb4980a2
7c540794d71ad68
faf3eb6379501e4
0efb51d2d3f4be9
current Lucid proposed linux-firmware 1.34.10 a2f8288d9b835f7 87 rt2561.bin d4df36a834915aa 53 rt2561s.bin f39dd61a33b92ad 9b rt2661.bin 83f26bb7dd7339f b3 rt2860.bin 6cbac32be690451 d6 rt2870.bin <-- 4c1e97e80a59d8e df rt3070.bin 282464bd68de9a7 fe rt3071.bin
md5sum rt{2,3}*
99bce75086ea635
2878d5eaa4ff907
9998485bc152cf0
7f55011396eff49
e4b60f5bb4980a2
7c540794d71ad68
faf3eb6379501e4