Asus EEE PC 901 Wi-Fi ralink2860 Haiku Release 1 Alpha 4.1 - invalid MAC address

Hello, sorry for the automatic translation.

On my netbook Asus EEE PC 901 set Haiku Release 1 Alpha 4.1
I had a problem with the connection Wi-Fi (Ralink RT2860).

Wireless connection says: “no wireles network found”

In the console, no networks:

 ifconfig / dev/net/ralink2860/0 scan
 
 ~> 

It has been observed that the MAC address of Haiku Release 1 Alpha 4.1(4.0) incorrectly identifies:

 Welcome to the Haiku shell.

~> Ifconfig
/ Dev/net/ralink2860/0
        Hardware type: Ethernet, Address: 00:0 c: 43:30:52:88
        inet addr:, Bcast:, Mask:
        inet6 addr: fe80 :: 20c: 43ff: fe30: 5288, Bcast: ffff: ffff: ffff: ffff ::, Prefix Length: 64
        MTU: 1500, Metric: 0, up broadcast configuring
        Receive: 0 packets, 0 errors, 0 bytes, 0 mcasts, 0 dropped
        Transmit: 2 packets, 4 errors, 614 bytes, 0 mcasts, 0 dropped
        Collisions: 0 

Windows XP

C: \> ipconfig
Беспроводное сетевое соединение 4 - Ethernet адаптер:

        DNS-суффикс этого подключения . . :
        Описание  . . . . . . . . . . . . : 802.11n Wireless LAN Card
        Физический адрес. . . . . . . . . : 00-22-43-00-1A-2F 

srCD

Root @ sysresccd / root% ifconfig

wlan0 Link encap: Ethernet HWaddr 00:22:43:00:1 a: 2f 

I suggested to replace the driver ralink2860 version of Haiku Release 1 Alpha 3.

After replacement, AP became seen, but without names:

Welcome to the Haiku shell.

~> Ifconfig / dev/net/ralink2860/0 scan
name address signal auth
                                 18: b0: ee: ac: d1: 0c 9 -
                                 18: b0: ee: ac: d2: 0c 8 -
                                 ae: c5: a7: c2: 42:0 c 7 -
                                 18: b0: ee: ac: d0: 0c 7 -
                                 19: e1: 00:38: e0: 0c 7 -
                                 19: e1: 00:38: e1: 0c 8 -
                                 19: e1: 00:38: e2: 0c 7 -
                                 c0: 49: da: f0: a5: 0d 38 -
                                 1f: c6: 44:2 f: 42:0 c 8 -
                                 e6: ba: 9e: 11: e0: 0c 5 -
                                 19: cb: 8d: 72: dd: 0c 16 -
                                 7d: 68:3 e: 10: dc: 0c 7 -
                                 c0: 91:12: ad: bb: 0c 9 -
                             26:18: ec: ab: c4: 0c 7 -
                                 18: b0: ee: cf: 40:0 c 8 -
                                 18: b0: ee: cf: 41:0 c 6 -
                                 18: b0: ee: cf: 42:0 c 7 -
                                 60:00: e6: 08:98:0 c 9 -
                                 19: e3: e3: 63:9 d: 0c 7 -

When you try to connect to any AP without a name, a window pops up:

“Could not join wireless network: Invalid Argument”

Driver version of Haiku Release 1 Alpha 3 MAC address identifies the correct:

~> Ifconfig
/ Dev/net/ralink2860/0
        Hardware type: Ethernet, Address: 00:22:43:00:1 a: 2f
        inet addr:, Bcast:, Mask:
        inet6 addr: fe80 :: 222:43 ff: fe00: 1a2f, Bcast: ffff: ffff: ffff: ffff ::, Prefix Length: 64
        MTU: 1500, Metric: 0, up broadcast configuring
        Receive: 104 packets, 0 errors, 14388 bytes, 0 mcasts, 0 dropped
        Transmit: 4 packets, 0 errors, 1240 bytes, 0 mcasts, 0 dropped
        Collisions: 0

Could you try this version? https://dl.dropbox.com/u/15787359/ralink2860.zip

Thank you! Your driver works!

MAC address is correct:

Welcome to the Haiku shell.

~> ifconfig 
loop    Hardware type: Local Loopback, Address: none
        inet addr: 127.0.0.1, Mask: 255.0.0.0
        inet6 addr: ::1, Prefix Length: 128
        MTU: 16384, Metric: 0, up loopback link
        Receive: 0 packets, 0 errors, 0 bytes, 0 mcasts, 0 dropped
        Transmit: 0 packets, 0 errors, 0 bytes, 0 mcasts, 0 dropped
        Collisions: 0

/dev/net/ar81xx/0
        Hardware type: Ethernet, Address: 00:22:15:ef:8a:84
        inet addr: 169.254.0.214, Bcast: 169.254.255.255, Mask: 255.255.0.0
        inet6 addr: fe80::222:15ff:feef:8a84, Bcast: ffff:ffff:ffff:ffff::, Prefix Length: 64
        MTU: 1500, Metric: 0, up broadcast auto-configured
        Receive: 0 packets, 0 errors, 0 bytes, 0 mcasts, 0 dropped
        Transmit: 9 packets, 0 errors, 2763 bytes, 0 mcasts, 0 dropped
        Collisions: 0

/dev/net/ralink2860/0
        Hardware type: Ethernet, Address: 00:22:43:00:1a:2f
        inet addr: 192.168.1.24, Bcast: 192.168.1.255, Mask: 255.255.255.0
        inet6 addr: fe80::222:43ff:fe00:1a2f, Bcast: ffff:ffff:ffff:ffff::, Prefix Length: 64
        MTU: 1500, Metric: 0, up broadcast link auto-configured
        Receive: 2336 packets, 0 errors, 2126191 bytes, 0 mcasts, 0 dropped
        Transmit: 2099 packets, 4 errors, 375184 bytes, 0 mcasts, 0 dropped
        Collisions: 0

~>     

The access points are visible to the names:

 
Welcome to the Haiku shell.

~> ifconfig /dev/net/ralink2860/0 scan
name                             address              signal  auth
su29-44                          00:1f:c6:44:2f:42        10  WPA
ZyXEL                            00:19:cb:8d:72:dd        18  (encrypted)
LALALA                           c8:60:00:e6:08:98        14  (encrypted)
tvk1975Y                         f8:c0:91:12:ad:bb         9  WPA
                                 00:18:b0:ee:cf:40         5  -
                                 00:18:b0:ee:ac:d0         9  -
Beeline_WiFi                     00:18:b0:ee:ac:d1         9  -
Beeline_WiFi_WPA                 00:18:b0:ee:ac:d2         7  WPA2
Beeline_WiFi                     00:19:e1:00:38:e1         5  -
onlime                           f0:7d:68:3e:10:dc         9  WPA2
~>   

For the record:

I’ve compiled this driver by reverting last ralink2860 driver update (i.e. to the version which was included in A3)
http://cgit.haiku-os.org/haiku/commit/?id=e2b24ac4ba48347e355f1df86142f75641cba642

git describe --tags
hrev44878

git revert e2b24ac4ba48347e355f1df86142f75641cba642

jam ralink2860

So it’s either this update to blame or some changes to compact lib http://cgit.haiku-os.org/haiku/log/src/libs/compat/freebsd_wlan

Could you please create a ticket at http://dev.haiku-os.org about this issue? There we could try to identify the exact commit which broke this driver.

I posted a message here:
https://dev.haiku-os.org/ticket/9204

I am having the same issue with my eeepc.

I have a newbie question, though. I have no idea what to do with this driver after I unzip it.
Following the information here:
https://www.haiku-os.org/blog/coling/2009-07-12/wifi_stack_prototype_works

I placed the driver in home/config/add-ons/kernel/drivers/bin and then made a symlink to /home/config/add-ons/kernel/drivers/dev/net/ralink2860. After reboot all I get is the debug console.

Hello, I am sorry that is not described in detail how to replace the driver.

You need to run Haiku with Live USB(CD).
Mount the volume set Haiku: RMB click on the desktop> mount>
Decompress the downloaded driver from the link above, and replace the file located on this path:
/boot/system/add-ons/kernel/drivers/bin/ralink2860

FYI this driver has been integrated in FreeBSD, and should updated as part of the next FreeBSD release sync (support would be actually added to ralinkwifi and ralink2860 deleted).

Hi,

If the person who does the sync is quite busy, maybe someone else could learn the process from them.

My motivation for this post is to have WPA2 functional on my RT2860.

It can’t be a simple thing to do (sync some drivers from FreeBSD) but it will have a concrete set of steps.

Maybe even importing the ralinkwifi driver from 10.2-STABLE would do fine.

I’m not entirely averse to doing it myself but by the time it would take me to learn all the coding conventions and get tooled up, it might get rejected since it’s not part of the normal way of pulling in the latest drivers or something.

Hi philcostin,

the “sync” means to bring our compatiblity layer to the 10.x branch from freebsd - wich would in fact give us a way bigger range of supported wifi cards. But as it is a “rewrite” of this layer… nothing you just “sync” by pressing some bottons or changing some variables its not that easy and involves a lot of work.
So nothing someone need to teach someone else… but a lot lot of work which someone needs the time and knowledge for.
ColinG who did the most work for the wireless compat stack… if i remember correctly - is not so active anymore.

So i guess you have either to wait for someone to pick this huge task, start to rewrite it on your own or find somone who is capable to do so and maybe want to do this for his thesis ;-).

Sure, I wouldn’t have expected that it was as simple as pressing the “sync” button - and I should probably have written more to clarify that I understand that since I kind of expected that to be pointed out. Words like “sync” are often heavily overloaded.

If the process of moving drivers from FreeBSD to Haiku is partially uncharted or changing territory however, or different for each driver, or even if a full re-consideration of what constitutes an importation of drivers from FreeBSD 10, of course I understand why someone wouldn’t have necessarily been ready to stare down that task yet.

To give a status: I’ve started this task, it seems to work OK with ethernet drivers, but not wlan ones. The FreeBSD framework has indeed a lot of changes in this area.

I’ve come to wonder whether a versioned compatibility layer wouldn’t be better to switch/upgrade on a per driver basis. This would also mean duplicate code somehow, so I’m not sure this would be productive. But it would give people an easier way to contribute.

Thanks for choosing to work toward this. Without looking too much at the code, I would imagine that the FreeBSD compatibility layer would only be required to provide the functionality that is shared among all network (and WiFi) drivers;

Since FreeBSD’s network drivers and their surrounding infrastructure may change over time, as they have, and since drivers in CURRENT may come to depend on more or less of FreeBSD’s library over time, it would be necessary to bring in / out similar functionality for Haiku as drivers are updated.

It might be simpler therefore, as a variation of what you suggest about duplication of code to support individual drivers, to include only the core functionality from each of the drivers separately, and to ensure Haiku itself has the necessary kernel features itself to support each driver’s buffer creation / teardown / register access in a fairly standardized (for Haiku) way.

I suppose there are pros and cons to each approach.

I’m curious to know how many devices this affects? And how much code would go into a versioned compatibility layer?