Systemd-networkd, wpa_supplicant and multiple USB Wifi adapters

TL;DR:
Is there a way to run a single wpa_supplicant process that handles any kind of USB WiFi adapter in connection with systemd-networkd?
Long version:
I'm running systemd-networkd, which has made networking setup a lot easier for wired interfaces. I'd like to make it just as easy for WiFi interfaces, but it seems there's some kind of wildcard support missing for wpa_supplicant. My question is whether I got this right, or there is some trick somewhere I didn't think of.
Here's my /etc/systemd/network/wifi.network:
[Match]
Name=wlp*
[Network]
DHCP=v4
In addition, I'm running:
systemctl start wpa_supplicant@wlp0s2f1u10
because that's the interface that my current WiFi USB adapter comes up on. This goes with /etc/wpa_supplicant/wpa_supplicant-wlp0s2f1u10.conf:
ctrl_interface=/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="something"
psk="else"
This all works fine, except that:
I have to plug my USB Wifi adapter into this exact USB port, otherwise the interface name changes and wpa_supplicant isn't running there
if I plug in a different USB WiFi adapter (I have a zoo; nothing exceptional I guess, but it's a pain to keep track of which goes with which computer), the interface name may be different and wpa_supplicant isn't running there
systemd-networkd solved that problem nicely with the wildcard in the interface name above (Name=wlp*). (Also, dhcpcd -- which I'm not using in this setup -- can be told to listen to "all interface" which is sort of similar)
My question: can I do something similar with wpa_supplicant, so I don't have to run a separate wpa_supplicant daemon on all possible interface names?
I'm guessing the answer is No (and I'd like confirmation on that).
Secondly, perhaps I can write one or more udev rules that will present all of those possible interfaces as wlan0, wlan1 or such. In which case I could presumably run wpa_supplicant@wlan0 only and be happy (assuming that wpa_supplicant is happy to run even as long as the interface does not exist. Does it?) Anybody have any hints how to go about this, I haven't done that.
Thirdly, if neither of those are viable, is this a reasonable-enough set of requirements so it would  make sense to run this by the wpa_supplicant developers as a possible future feature?
Last edited by jernst (2015-01-11 05:54:31)

jernst wrote:
systemd-networkd solved that problem nicely with the wildcard in the interface name above (Name=wlp*). (Also, dhcpcd -- which I'm not using in this setup -- can be told to listen to "all interface" which is sort of similar)
My question: can I do something similar with wpa_supplicant, so I don't have to run a separate wpa_supplicant daemon on all possible interface names?
networkd "solved" nothing here. This is a mere coincidence that the wlp* wildcard works. For instance, you might have an interface called "wls1". Also, wpa_supplicant doesn't "listen" because "listen" applies to the TCP/IP layer. wpa_supplicant works at the frame level, so I'm not sure what you mean. If you want software that _manages_ multiple wifi interfaces, use netctl.
jernst wrote:I'm guessing the answer is No (and I'd like confirmation on that).
Correct.
jernst wrote:Secondly, perhaps I can write one or more udev rules that will present all of those possible interfaces as wlan0, wlan1 or such. In which case I could presumably run wpa_supplicant@wlan0 only and be happy (assuming that wpa_supplicant is happy to run even as long as the interface does not exist. Does it?) Anybody have any hints how to go about this, I haven't done that.
For the udev part, do something like
: cat /etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ATTR{address}=="a1:b1:c1:d1:e1:f1", NAME="wl0"
SUBSYSTEM=="net", ATTR{address}=="a2:b2:c2:d2:e2:f2", NAME="wl1"
Then, modify [email protected] as
: diff usr/lib/systemd/system/[email protected]{,.new}
+++ usr/lib/systemd/system/[email protected] 2015-01-12 11:45:10.839852357 -0700
--- usr/lib/systemd/system/[email protected] 2015-01-12 11:44:56.843027430 -0700
@@ -1,5 +1,6 @@
[Unit]
Description=WPA supplicant daemon (interface- and nl80211 driver-specific version)
-Requires=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
# NetworkManager users will probably want the dbus version instead.
so that the unit doesn't fail if the adapter is not plugged. However, this solution is suboptimal (Think what happens if you suddenly remove the adapter)... You can try to use "BindsTo=" instead of "Requires=" but I wonder if you get errors on startup if the adapter is absent...
jernst wrote:Thirdly, if neither of those are viable, is this a reasonable-enough set of requirements so it would  make sense to run this by the wpa_supplicant developers as a possible future feature?
No. wpa_supplicant is only supposed to to what it's told. It is not a canned network management solution.

Similar Messages

  • Systemd-Networkd - post_up and pre_down script?

    I've used the old netcfg before, now I reinstall a system and configure my network-cards with systemd-networkd.
    I used the POST_UP and PRE_DOWN-functions for issuing a command, how do I map this functionality to networkd-systemd?

    Mr.Elendig wrote:Depends on just what you are trying to do.
    What exactly do you mean?
    I need to run a command when the device is up and before its going to be down.
    How is this possible?

  • Time Capsule and multiple USB drives ... no show

    Hi,
    probably one of the Apple wizards can enlighten me here, as also the information in this forum seems inconclusive.
    I have a Time Capsule, and everything is fine with that.
    I can connect one drive via USB, and this drive shows.
    However, I seem to be unable to connect two drives, regardless of HUB I use (I tried two powered and two passive ones fron three different vendors), and which sequence I turn these things on and off.
    The first drive that is connected shows.
    If I connect the hub with already spinning drives, it is nondeterministic which one will show up.
    But only one will show.
    Is this expected behaviour?
    I find references on the Apple site and throughout this forum that multiple drives are possible.
    Greetings,
    - Thomas

    This is not an answer, but it seemed like a good place to post my latest experience.
    I got the Time Capsule and connected three drives to it via USB hub. It worked fine for awhile but then I realized that the backups were not running.
    It was a struggle. I finally reinitialized the TC and then got another software program other than Time Machine to run the backups.
    So that worked, but now when I plug the other drives in by USB the TC drops off. I can't connect to it.
    The TC shows up on the network, but when I plug other drives in to it, it drops off the network.
    I finally worked around the problem (with fingers crossed!). I plugged in a couple of the drives to one of my older macs and networked to that drive and the backups seem to be running.
    The I plugged one of the drives in to my older Airport Extreme via USB and that backup is running via wireless.
    Then if I leave the TC alone with nothing connected to it, I can run a backup to it.
    But it is frustrating. First, I could run the backups with TM to the attached drives, no problem. Now, I cannot use the drives connected to the TC via USB. I have to connect them to something else completely.
    And that is after the backups stopped working under TM.
    It seems like the Holy Grail - a backup program that works.
    For today, I think I have worked around my problem, but it is disappointing. I was hoping the TC would allow me to connect drives to it by USB and run the backup through TM. Now TC is basically a networked drive. (Forgot to mention that i am not using it for wireless connection.) I turned that function off and it just a networked drive.

  • Unable to set up networking with systemd-networkd

    I'm trying to set up networking on a VPS I purchased.
    When I boot off the arch install image, the networking set up is configured via DHCP and everything seems to work perfectly.
    This is the configuration I see from the
    ip addr
    and
    ip route
    commands:
    http://i.imgur.com/yeLFO6x.png
    I proceeded to follow the instructions at the systemd-networkd page, and enabled the right services.
    I also created an ethernet.network file in the correct directory.
    You can see the contents of the file in the following screenshot, along with the ouput of some of the ip commands in the following screenshot.
    http://i.imgur.com/hJNIZrJ.png
    I'm unable to ping google, but somehow I'm able to curl successfully download the google.com page via curl.
    I've demonstrated this in the following screenshot. I cannot fathom how this is possible.
    http://i.imgur.com/YokAKog.png
    I'll be happy to provide any other information that could be useful, and would really appreciate some help getting to the bottom of this.
    Thanks a tonne.
    -- mod edit: read the Forum Etiquette and only post thumbnails http://wiki.archlinux.org/index.php/For … s_and_Code [jwr] --

    That subnet is not only odd - it should not work.
    A /32-subnet is perfect for localhost and the like. It basically means you can't reach any other IP than your own.
    Also the gateway from your provider's DHCP-server (first screenshot) ist very far away from your own IP. I'm too lazy to calculate, but in order to reach that gateway with that IP, the netmask would have to be between 16 and 8.
    In short: I can easily tell you why it wouldn't work - what I don't get is why it worked with curl in your setup or your provider's DHCP and/or what your provider did there.
    In any case: talk to your provider - they might be able to give you the correct addresses/masks and maybe shed some light (I'm really very curious).
    Last edited by PaterSiul (2015-04-19 18:40:57)

  • My iPod will not charge though it is turned on. and I've tried multiple adapters and computer usb. My computer doesn't recognize it either.

    I've tried multiple adapters and computer usb. My computer doesn't recognize it either.

    Try:
    iPod touch: Hardware troubleshooting

  • How does systemd, wpa_supplicant, and dhcpcd work together? rtl8188su

    I'm running arch with alarm (done a pacman -Syu to get latest everything) on an original Raspberry Pi model B.
    I'm using a Belkin USB adapter which is really a Realtek rtl8188su chip, which is recognized with the r8712u module. I want to do it all from the command line (not running a GUI, as this Pi won't be having a display attached.)
    The system recognizes the built-in Ethernet, and dhcpcd assigns it an IP address, so I can SSH into it and try to bring up the wlan0 interface.
    I'm an old-school Linux/UNIX hacker, but I haven't had a lot of experience with systemd, nor with wpa_supplicant or even much of udev, so I'm a bit lost in trying to make this work.
    I made sure wpa_supplicant and wpa_cli were installed. Then I edited /etc/wpa_supplicant/wpa_supplicant.conf to add my ssid/passphrase, and saved it as /etc/wpa_supplicant/wpa_supplicant.wlan0.conf. I also did "systemctl enable wpa_supplicant," and I've rebooted.
    The status of the system is that it does not enable the wlan0 interface. Further, the wpa_cli tool does not work. If I run just "wpa_cli" or with a command like "wpa_cli list" then I get the error:
    could not connect to wpa_supplicant - wpa_ctrl_open: No such file or directory
    This is weird, because wpa_supplicant is running in dbus listen mode:
    [root@alarmpi ~]# ps alx | grep [w]pa
    0 0 94 1 20 0 5636 1416 poll_s Ss ? 0:00 /usr/sbin//wpa_supplicant -u
    Each time I boot, I get this message in /dev/log/messages.log:
    Nov 10 01:40:06 alarmpi kernel: [ 648.082619] ADDRCONF(NETDEV_UP): wlan0: link is not ready
    Now, if I insted does "systemctp stop wpa_supplicant" and start it manually, it does bring up the interface:
    [root@alarmpi ~]# wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant/wpa_supplicant.wlan0.conf
    wlan0: Trying to associate with a0:21:b7:63:a1:98 (SSID='jwatte' freq=2462 MHz)
    wlan0: Associated with a0:21:b7:63:a1:98
    wlan0: WPA: Key negotiation completed with a0:21:b7:63:a1:98 [PTK=CCMP GTK=CCMP]
    wlan0: CTRL-EVENT-CONNECTED - Connection to a0:21:b7:63:a1:98 completed (auth) [id=0 id_str=]
    [root@alarmpi ~]# ifconfig wlan0
    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet6 fe80::a86:3bff:feb4:c21a prefixlen 64 scopeid 0x20<link>
    ether 08:86:3b:b4:c2:1a txqueuelen 1000 (Ethernet)
    RX packets 30 bytes 3813 (3.7 KiB)
    RX errors 0 dropped 1 overruns 0 frame 0
    TX packets 5 bytes 610 (610.0 B)
    TX errors 0 dropped 1 overruns 0 carrier 0 collisions 0
    [root@alarmpi ~]#
    However, dhcpcd is not auto-launched to provide an IP address to the interface.
    So, how is this supposed to work? How am I supposed to configure the system so that all the pieces click together? It should start wpa_supplicant with the right config data, and/or configure it over dbus correctly, and it should make sure dhcpcd is then invoked to obtain an IP address. I have *no idea* how to actually configure this to do the right thing, because all the tutorials and documentation I can find on the web is either very abstract ("services live in /usr/lib/systemd/...") or just claim that things "will magically work" if I have the correct configuration.
    Help! Don't know what to do next!

    Your manual wpa_supplicant invocation result looks good, so the major hurdle you have taken already.
    For wireless you need a management method that acts as interface to wpa_supplicant and dhcp and watches the connection. Before you browse off to archlinuxarm, also read the non-abstract introduction here: https://wiki.archlinux.org/index.php/Wi … management

  • Systemd with wpa_supplicant 802.1X wired and dhcpcd - Need help

    Hi,
    At work we use 802.1X wired authentication on the network to get access. If successfully authenticated then I get 10.x.x.x network address from DHCP,
    and if not successfully authenticated, I get a 172.x.x.x address from DHCP.
    Now I've configured wpa_supplicant with certificates in its configuration file so that one is working fine.
    What I have problems with is the startup, this is what I need in order:
    * I need wpa_supplicant to start up
    * wpa_supplicant needs to authenticate completely
    * now dhcpcd may run and I should get 10.x.x.x address.
    I've tried two (b*ttfugly) ways of solving this under systemd:
    wpa_auth.service
    [Unit]
    Description=WPA 802.1X
    Requires=sys-subsystem-net-devices-eth0.device
    After=sys-subsystem-net-devices-eth0.device
    [Service]
    Type=simple
    ExecStart=/usr/sbin//wpa_supplicant -ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant.conf
    [Install]
    Alias=multi-user.target.wants/wpa_auth.service
    And in [email protected] I've added:
    After=wpa_auth.service
    However this won't work since wpa_supplicant isn't done authenticating when dhcpcd starts up.
    I've also tried using -B option to wpa_supplicant and forking in wpa_auth.service like this:
    Type=forking
    ExecStart=/usr/sbin//wpa_supplicant -B -ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant.conf
    Now if I'm lucky this works, but it's still a race condition.
    So: Next things I've tried is to make the wpa_auth.service start up a script (Type=forking) that executes wpa_supplicant, and adds a sleep 1, this gives wpa_supplicant 1 second to authenticate, but its still a shitty and unsafe solution.
    Last solution I tried was using the above solution but replaced sleep with wpa_cli -a script that according to man page executes the script when it recieves an event. So right now the chain looks like this:
    In chronological order:
    - wpa_auth.service (systemd)
    Type=forking
    - script
    - wpa_supplicant
    - wpa_cli -a script2 (will block until recieving an CONNECTED/DISCONNECTED event from wpa_supplicant, then run script2)
    - script2
    -pkill wpa_cli
    - exit 0
    done - dhcpcd may start
    I just want to find a way to start dhcpcd after wpa_supplicant has authenticated so I get a correct IP address.
    How do I do this in a correct way? Can I use dbus somehow to make wpa_supplicant signal that it is done authenticating?
    Thanks
    Last edited by dimman (2012-11-23 15:56:01)

    From the sample wpa_supplicant.conf:
    # scan_ssid:
    # 0 = do not scan this SSID with specific Probe Request frames (default)
    # 1 = scan with SSID-specific Probe Request frames (this can be used to
    # find APs that do not accept broadcast SSID or use multiple SSIDs;
    # this will add latency to scanning, so enable this only when needed)
    So... looks like that likely isn't the solution. Of course, this is all just speculation now, until I can resolve the hardware issues or get a new laptop.

  • New 13" Macbook Pro trying to connect to a Panasonic VIERA TC-L42U30 as second monitor. I've used multiple hdmi-thunderbolt/mini displayport adapters and multiple hdmi cables and still no success. The Macbook does not sense the second monitor (TV). Help?!

    I've been a Mac since 2008, so I know my way around the system pretty well. This issue, however, has me stumped. I had an iMac until now and only now am I experiencing some difficulty with my new MacBook Pro. The model I have is the newest 13" Macbook Pro model and I'm trying to connect a Panasonic VIERA TC-L42U30 42" HDTV as a second monitor via the Thunderbolt port.
    It worked the first two times and hasn't worked since, after 10-15 attempts with different configurations, turning things on n off, restarting the mac, unplugging the cables, adapters, TV, resetting the P RAM, etc... I've used multiple hdmi-thunderbolt/mini displayport adapters and multiple hdmi cables and still no success. No matter what I do, the Macbook does not sense the TV as a second monitor anymore.
    I took the MacBook Pro to the Apple Store, and their "genius" there had it working fine with a DVI connection to a regular monitor. The Panasonic TV I have has HDMI connections and one VGA connection which does not support HD, but no DVI option. I want an HD connection to mirror or extend my MacBook Pro screen. At the Apple Store, they didn't have a Thunderbolt/Mini DisplayPort to HDMI adapter, so he could not try that out for me.
    Anyone else have this configuration or another similar one with a Panasonic HDTV?
    Ideas? Suggestions? Anything?! Help!!
    P.S. I'm running Mountain Lion, if that wasn't already obvious. Everything is up to date in my App Store as well.
    Thanks!

    Hi There,
    I have had the exact same issue but with a projector.
    The issue lies with Mountian Lion 10.8.2.
    I tried many a combination with no luck to get HDMI working.
    Took my mac into the apple store and came to the conclusion it was the software, so I asked them to install 10.8 onto it (this is destructive so a backup is a must)
    Bought my macbook home and voila, now displaying through my projector.
    There is a small graphics update after 10.8.1 which seems to be the cause.
    Hope this helps.
    Thanks.

  • Can I set up multiple usb hard drives- one for time machine and a second for media? Can one also print wirelessly with an old HP C6280 printer?

    Can I set up multiple usb hard drives- one for time machine and a second for media?
    Can one also print wirelessly with an old HP C6280 printer?

    Can I set up multiple usb hard drives- one for time machine and a second for media?
    Yes.
    Can one also print wirelessly with an old HP C6280 printer?
    Possibly by using an Airport Express, but depends on what type of port connection the printer requires.

  • Synchronize multiple tasks and multiple boards with X-series USB devices

    Hi all,
    I am trying to figure out how to synchronize multiple tasks across multiple X-series USB boards (6353, to be precise). 
    I have to run a digital output task AND an analog output task on each board.  All four tasks (the DO and AO on Board 1, and the DO and AO on Board 2) must be synchronized.
    I know how to synchronize multiple tasks on a single board.  I've been doing that for years.  That works fine.
    I know how to synchronize a single task across multiple boards (say, a DO task across 2 different boards).  That works fine too.
    For the life of me, I can't figure out how to marry the two.  Everything I've seen, all of the examples, etc. assume you want to do one or the other, or that you have a RTSI cable available.  Are there any examples out there that synchronize multiple tasks across multiple USB boards?
    I tried exporting the AO clock signal from my master AO task to PFI12, and then using the signal on PFI12 to as the clock source for the remaining tasks (Dev1/PFI12 physically connected to Dev2/PFI12, and Dev1/PFI12 set as the clock source for Dev1's DO task). 
    I have also tried setting Dev1/aoSampClock as the source for Dev1's DO task.
    Under both configurations, I invariably get error -89137 when I try to start the tasks -- required resources (PFI12) in use by Dev1/do/SampClock.  I understand what the error is telling me.  What I don't understand is why I'm receiving this error when I don't have any of my tasks configured to use the DO Sample Clock.  It seems as though it is not possible to export a clock signal to a PFI line and simultaneously run a clocked digital task, even if the clock source for that task is specified as something other than the DO Sample Clock?
    So, my question is, is it possible to do what I want to do?  And if so, how do I do it?  How do I configure a common clock source across multiple tasks running on multiple USB boards?
    Hoping for insight from those wiser than I...
    Diane
    Solved!
    Go to Solution.

    Update:  I decided to try using a counter as the source clock.  One cannot use counter 0 to accomplish this, but it does appear to work with counter 1.
    I'll take what I can get.  Fortunately I have two spare counters.  (Yes, I'm running counter tasks too -- 6 of them -- but they don't have to be synchronized.)
    I have to add both digital and analog input tasks as well -- all synchronous with each other, but not with the output tasks since they'll be running at different sample rates.  I hope I'm able to use a counter as the source clock for those as well.
    My head aches.

  • I have an iMac G4 and need to connect it to the internet. Do I need to buy an airport card or can I just use a normal USB wifi stick?

    I have an iMac G4 and need to connect it to the internet. Do I need to buy an airport card or can I just use a normal USB wifi stick?

    Will this need to be a special mac compatible one or will they all be fine?
    You need to see "works on Mac" on the box. All such deveices require a driver. The adaptor would work in many cases except for the lack of Mac drivers. Some companies have the proper Mac drivers on their web sites, some shuffle you off to suspect third-party sites, and some have no Mac drivers at all. If you want to buy one adaptor, not have to return it or send hours searcing the web for a driver that works, look at this one:
    http://eshop.macsales.com/item/Newer%20Technology/MXP2802NU2C/
    It is best for iMacs with USB 2.0 ports. If you have only USB 1.1 ports, you can save money with this one:
    Newer Technology MAXPower 802.11g/b Wireless USB 2.0 Stick Adapter Share, Surf, & Stream Anywhere!

  • HT1688 Just bought a 5c and when I connected to our desktop it doesn't recognize that the iphone is plugged in.  We have tried multiple usb ports and nothing.

    Just bought a 5c and when I connected to our desktop it doesn't recognize that the iphone is plugged in.  We have tried multiple usb ports and nothing.

    Hello csmithhisler,
    Congratulations on your new iPhone 5c!  I am sure you are eager to get your new iPhone set up, but sounds like your iPhone is not appearing in iTunes.  I recommend following the steps in this article to troubleshoot the issue:
    iOS: Device not recognized in iTunes for Windows
    http://support.apple.com/kb/TS1538
    Thank you for using Apple Support Communities.
    Best,
    Sheila M.

  • USB wifi adapter can only handle one request or socket at a time

    I have a usb wifi adapter that I bought recently.  The strange thing is that if I'm doing only one thing that is using the network (e.g. downloading a file) it works good and fast. But say I'm downloading a file and I do ANYTHING else that uses the network (e.g. just opening a browser at google.ca), the download comes to a stop. Then if I close the browser, the download starts up again a couple seconds later, good and fast.
    Another example is, say I'm in a Google Hangouts (video chat) session. As long as that is the only thing I have running, the chat works fine. If I open a second browser window, then the chat gets super choppy and pretty much un-usable until I close the second window.
    So basically it seems like I can have only one open socket at a time, or else it can handle only one request at a time. Also, most webpages open very slowly as a result because the browser only seems to be able to download one static file at a time (e.g. js and css files needed by the page).
    I'm sure it's a problem with the usb wifi adapter because I didn't have these problems when I was on a wired connection, and I have other devices using wifi (e.g. laptops and tablets) that don't have this problem either.
    Rather than paste a bunch of output from commands, please kindly tell me what to run in order to gather any useful info.
    Thanks,
    Edit:  The adapter is an ASUS USB n-53 (N600).
    Last edited by Pacopag (2014-07-18 14:36:20)

    I was exploring the CD that came with the device.  Turns out there are Linux drivers on it.  I didn't install any drivers, as wicd detected it automatically.  I'm wondering if changing drivers might help.  Can someone help me interpret the installation instructions?
    Here are the instructions
    * README
    * Ralink Tech Inc.
    * http://www.ralinktech.com
    =======================================================================
    ModelName:
    ===========
    RT3572 Wireless Lan Linux Driver
    =======================================================================
    Driver lName:
    ===========
    rt3572sta.o/rt3572sta.ko
    =======================================================================
    Supporting Kernel:
    ===================
    linux kernel 2.4 and 2.6 series.
    Tested in Redhat 7.3 or later.
    =======================================================================
    Ralink Hardware:
    ===================
    Ralink 802.11n Wireless LAN Card.
    =======================================================================
    Description:
    =============
    This is a linux device driver for Ralink RT2870 USB ABGN WLAN Card.
    =======================================================================
    Contents:
    =============
    Makefile : Makefile
    *.c : c files
    *.h : header files
    =======================================================================
    Features:
    ==========
    This driver implements basic IEEE802.11. Infrastructure and adhoc mode with
    open or shared or WPA-PSK or WPA2-PSK authentication method.
    NONE, WEP, TKIP and AES encryption.
    =======================================================================
    Build Instructions:
    ====================
    1> tar -jxvf 2011_1003_RT3572_Linux_STA_v2.5.0.0.DPO.tar.bz2
    go to "./2011_1003_RT3572_Linux_STA_v2.5.0.0.DPO" directory.
    2> switch to super user.
    ** for Fedora
    $su
    ** for Ubuntu
    $sudo su
    3> in Makefile
    set the "MODE = STA" in Makefile and chose the TARGET to Linux by set "TARGET = LINUX"
    define the linux kernel source include file path LINUX_SRC
    modify to meet your need.
    4> in os/linux/config.mk
    define the GCC and LD of the target machine
    define the compiler flags CFLAGS
    modify to meet your need.
    ** Build for being controlled by NetworkManager or wpa_supplicant wext functions
    Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y'.
    => #>cd wpa_supplicant-x.x
    => #>./wpa_supplicant -Dwext -ira0 -c wpa_supplicant.conf -d
    ** Build for being controlled by WpaSupplicant with Ralink Driver
    Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n'.
    => #>cd wpa_supplicant-0.5.7
    => #>./wpa_supplicant -Dralink -ira0 -c wpa_supplicant.conf -d
    5> compile driver source code
    $make
    =======================================================================
    Install Instructions:
    ================================
    1> load driver
    $make install
    2> plug in USB dongle.
    =======================================================================
    Note:
    ================================
    Under Fedora 15 or 16, after you install the driver, if there is "firmware missing" issue occurs, please follow the following steps:
    1> remove driver
    $rmmod rt2800usb
    $rmmod rt2800lib
    $rmmod rt2x00usb
    $rmmod rt2x00lib
    2> enter /etc/modprobe.d and edit blacklist.conf. Add one line (ususally add it in the buttom of the file):
    blacklist rt2800usb
    3> reboot system
    $reboot
    =======================================================================
    Uninstall Instructions:
    ================================
    1> go to "./2011_1003_RT3572_Linux_STA_v2.5.0.0.DPO" directory.
    2> switch to super user.
    $sudo su
    3> unload driver
    $make uninstall
    4> reboot system
    $reboot
    =======================================================================
    CONFIGURATION:
    ====================
    RT2870 driver can be configured via following interfaces,
    i.e. (i)"iwconfig" command, (ii)"iwpriv" command, (iii) configuration file
    i) iwconfig comes with kernel.
    ii) iwpriv usage, please refer to file "iwpriv_usage.txt" for details.
    iii)modify configuration file "RT2870STA.dat" in /etc/Wireless/RT2870STA/RT2870STA.dat.
    Configuration File : RT2870STA.dat
    # Copy this file to /etc/Wireless/RT2870STA/RT2870STA.dat
    # This file is a binary file and will be read on loading rt.o module.
    # Use "vi RT2870STA.dat" to modify settings according to your need.
    # 1.) set NetworkType to "Adhoc" for using Adhoc-mode, otherwise using Infrastructure
    # 2.) set Channel to "0" for auto-select on Infrastructure mode
    # 3.) set SSID for connecting to your Accss-point.
    # 4.) AuthMode can be "WEPAUTO", "OPEN", "SHARED", "WPAPSK", "WPA2PSK", "WPANONE"
    # 5.) EncrypType can be "NONE", "WEP", "TKIP", "AES"
    # for more information refer to the Readme file.
    #The word of "Default" must not be removed
    Default
    CountryRegion=5
    CountryRegionABand=7
    CountryCode=
    SSID=Dennis2860AP
    NetworkType=Infra
    WirelessMode=9
    Channel=0
    BeaconPeriod=100
    TxPower=100
    BGProtection=0
    TxPreamble=0
    RTSThreshold=2347
    FragThreshold=2346
    TxBurst=1
    WmmCapable=0
    AckPolicy=0;0;0;0
    AuthMode=OPEN
    EncrypType=NONE
    WPAPSK=
    DefaultKeyID=1
    Key1Type=0
    Key1Str=
    Key2Type=0
    Key2Str=
    Key3Type=0
    Key3Str=
    Key4Type=0
    Key4Str=
    PSMode=CAM
    FastRoaming=0
    RoamThreshold=70
    HT_RDG=1
    HT_EXTCHA=0
    HT_OpMode=1
    HT_MpduDensity=4
    HT_BW=1
    HT_AutoBA=1
    HT_BADecline=0
    HT_AMSDU=0
    HT_BAWinSize=64
    HT_GI=1
    HT_MCS=33
    HT_MIMOPSMode=3
    IEEE80211H=0
    TGnWifiTest=0
    WirelessEvent=0
    CarrierDetect=0
    *NOTE:
    WMM parameters
    WmmCapable Set it as 1 to turn on WMM Qos support
    AckPolicy1~4 Ack policy which support normal Ack or no Ack
    (AC_BK, AC_BE, AC_VI, AC_VO)
    All WMM parameters do not support iwpriv command but ¡¥WmmCapable¡¦¡¦,
    please store all parameter to RT2870STA.dat, and restart driver.
    syntax is 'Param'='Value' and describes below.
    @> CountryRegion=value
    value
    0: use 1 ~ 11 Channel
    1: use 1 ~ 13 Channel
    2: use 10 ~ 11 Channel
    3: use 10 ~ 13 Channel
    4: use 14 Channel
    5: use 1 ~ 14 Channel
    6: use 3 ~ 9 Channel
    7: use 5 ~ 13 Channel
    31: use 1 ~ 14 Channel (ch1-11:active scan, ch12-14 passive scan)
    @> CountryRegionABand=value
    value
    0: use 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165 Channel
    1: use 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140 Channel
    2: use 36, 40, 44, 48, 52, 56, 60, 64 Channel
    3: use 52, 56, 60, 64, 149, 153, 157, 161 Channel
    4: use 149, 153, 157, 161, 165 Channel
    5: use 149, 153, 157, 161 Channel
    6: use 36, 40, 44, 48 Channel
    7: use 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165 Channel
    8: use 52, 56, 60, 64 Channel
    9: use 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165 Channel
    10: use 36, 40, 44, 48, 149, 153, 157, 161, 165 Channel
    11: use 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 149, 153, 157, 161 Channel
    @> CountryCode=value
    value
    AG, AR, AW, AU, AT, BS, BB, BM, BR, BE, BG, CA, KY, CL, CN, CO, CR, CY, CZ, DK, DO, EC, SV, FI, FR, DE,
    GR, GU, GT, HT, HN, HK, HU, IS, IN, ID, IE, IL, IT, JP, JO, LV, LI, LT, LU, MY, MT, MA, MX, NL, NZ, NO,
    PE, PT, PL, RO, RU, SA, CS, SG, SK, SI, ZA, KR, ES, SE, CH, TW, TR, GB, UA, AE, US, VE
    "" => using default setting: 2.4 G - ch 1~11; 5G - ch 52~64, 100~140, 149~165
    @> SSID=value
    value
    0~z, 1~32 ascii characters.
    @> WirelessMode=value
    value
    0: legacy 11b/g mixed
    1: legacy 11B only
    2: legacy 11A only //Not support in RfIcType=1(id=RFIC_5225) and RfIcType=2(id=RFIC_5325)
    3: legacy 11a/b/g mixed //Not support in RfIcType=1(id=RFIC_5225) and RfIcType=2(id=RFIC_5325)
    4: legacy 11G only
    5: 11ABGN mixed
    6: 11N only
    7: 11GN mixed
    8: 11AN mixed
    9: 11BGN mixed
    10: 11AGN mixed
    @> Channel=value
    value
    depends on CountryRegion or CountryRegionABand
    @> BGProtection=value
    value
    0: Auto
    1: Always on
    2: Always off
    @> TxPreamble=value
    value
    0:Preamble Long
    1:Preamble Short
    2:Auto
    @> RTSThreshold=value
    value
    1~2347
    @> FragThreshold=value
    value
    256~2346
    @> TxBurst=value
    value
    0: Disable
    1: Enable
    @> NetworkType=value
    value
    Infra: infrastructure mode
    Adhoc: adhoc mode
    @> AuthMode=value
    value
    OPEN For open system
    SHARED For shared key system
    WEPAUTO Auto switch between OPEN and SHARED
    WPAPSK For WPA pre-shared key (Infra)
    WPA2PSK For WPA2 pre-shared key (Infra)
    WPANONE For WPA pre-shared key (Adhoc)
    WPA Use WPA-Supplicant
    WPA2 Use WPA-Supplicant
    @> EncrypType=value
    value
    NONE For AuthMode=OPEN
    WEP For AuthMode=OPEN or AuthMode=SHARED
    TKIP For AuthMode=WPAPSK or WPA2PSK
    AES For AuthMode=WPAPSK or WPA2PSK
    @> DefaultKeyID=value
    value
    1~4
    @> Key1=value
    Key2=value
    Key3=value
    Key4=value
    value
    10 or 26 hexadecimal characters eg: 012345678
    5 or 13 ascii characters eg: passd
    (usage : "iwpriv" only)
    @> Key1Type=vaule
    Key2Type=value
    Key3Type=vaule
    Key4Type=vaule
    value
    0 hexadecimal type
    1 assic type
    (usage : reading profile only)
    @> Key1Str=value
    Key2Str=value
    Key3Str=vaule
    Key4Str=vaule
    value
    10 or 26 characters (key type=0)
    5 or 13 characters (key type=1)
    (usage : reading profile only)
    @> WPAPSK=value
    value
    8~63 ASCII or
    64 HEX characters
    @> WmmCapable=value
    value
    0: Disable WMM
    1: Enable WMM
    @> PSMode=value
    value
    CAM Constantly Awake Mode
    Max_PSP Max Power Savings
    Fast_PSP Power Save Mode
    @> FastRoaming=value
    value
    0 Disabled
    1 Enabled
    @> RoamThreshold=value
    value
    Positive Interger(dBm)
    @> HT_RDG=value
    value
    0 Disabled
    1 Enabled
    @> HT_EXTCHA=value (Extended Channel Switch Announcement)
    value
    0 Below
    1 Above
    @> HT_OpMode=value
    value
    0 HT mixed format
    1 HT greenfield format
    @> HT_MpduDensity=value
    value (based on 802.11n D2.0)
    0: no restriction
    1: 1/4 £gs
    2: 1/2 £gs
    3: 1 £gs
    4: 2 £gs
    5: 4 £gs
    6: 8 £gs
    7: 16 £gs
    @> HT_BW=value
    value
    0 20MHz
    1 40MHz
    @> HT_AutoBA=value
    value
    0 Disabled
    1 Enabled
    @> HT_BADecline
    value
    0 Disabled
    1 Enabled <Reject BA request from AP>
    @> HT_AMSDU=value
    value
    0 Disabled
    1 Enabled
    @> HT_BAWinSize=value
    value
    1 ~ 64
    @> HT_GI=value
    value
    0 long GI
    1 short GI
    @> HT_MCS=value
    value
    0 ~ 15
    33: auto
    @> HT_MIMOPSMode=value
    value (based on 802.11n D2.0)
    0 Static SM Power Save Mode
    1 Dynamic SM Power Save Mode
    2 Reserved
    3 SM enabled
    (not fully support yet)
    @> IEEE80211H=value
    value
    0 Disabled
    1 Enabled
    @> TGnWifiTest=value
    value
    0 Disabled
    1 Enabled
    @> WirelessEvent=value
    value
    0 Disabled
    1 Enabled <send custom wireless event>
    @> CarrierDetect=value
    value
    0 Disabled
    1 Enabled
    MORE INFORMATION
    =================================================================================
    If you want for rt2870 driver to auto-load at boot time:
    A) choose ra0 for first RT2870 WLAN card, ra1 for second RT2870 WLAN card, etc.
    B) create(edit) 'ifcfg-ra0' file in /etc/sysconfig/network-scripts/,
    edit( or add the line) in /etc/modules.conf:
    alias ra0 rt2870sta
    C) edit(create) the file /etc/sysconfig/network-scripts/ifcfg-ra0
    DEVICE='ra0'
    ONBOOT='yes'
    NOTE:
    if you use dhcp, add this line too .
    BOOTPROTO='dhcp'
    *D) To ease the Default Gateway setting,
    add the line
    GATEWAY=x.x.x.x
    in /etc/sysconfig/network
    Here is the Makefile
    RT28xx_MODE = STA
    TARGET = LINUX
    CHIPSET = 3572
    OSABL = NO
    #RT28xx_DIR = home directory of RT28xx source code
    RT28xx_DIR = $(shell pwd)
    RTMP_SRC_DIR = $(RT28xx_DIR)/RT$(CHIPSET)
    #PLATFORM: Target platform
    PLATFORM = PC
    #PLATFORM = 5VT
    #PLATFORM = IKANOS_V160
    #PLATFORM = IKANOS_V180
    #PLATFORM = SIGMA
    #PLATFORM = SIGMA_8622
    #PLATFORM = STAR
    #PLATFORM = IXP
    #PLATFORM = INF_TWINPASS
    #PLATFORM = INF_DANUBE
    #PLATFORM = INF_AR9
    #PLATFORM = INF_VR9
    #PLATFORM = BRCM_6358
    #PLATFORM = INF_AMAZON_SE
    #PLATFORM = CAVM_OCTEON
    #PLATFORM = CMPC
    #PLATFORM = RALINK_2880
    #PLATFORM = RALINK_3052
    #PLATFORM = SMDK
    #PLATFORM = RMI
    #PLATFORM = RMI_64
    #PLATFORM = KODAK_DC
    #PLATFORM = DM6446
    #PLATFORM = FREESCALE8377
    #PLATFORM = BL2348
    #PLATFORM = BLUBB
    #PLATFORM = BLPMP
    #PLATFORM = MT85XX
    #PLATFORM = NXP_TV550
    #PLATFORM = MVL5
    ifeq ($(TARGET),LINUX)
    MAKE = make
    endif
    ifeq ($(PLATFORM),5VT)
    LINUX_SRC = /home/ralink-2860-sdk-5vt-distribution/linux-2.6.17
    CROSS_COMPILE = /opt/crosstool/uClibc_v5te_le_gcc_4_1_1/bin/arm-linux-
    endif
    ifeq ($(PLATFORM),IKANOS_V160)
    LINUX_SRC = /home/sample/projects/LX_2618_RG_5_3_00r4_SRC/linux-2.6.18
    CROSS_COMPILE = mips-linux-
    endif
    ifeq ($(PLATFORM),IKANOS_V180)
    LINUX_SRC = /home/sample/projects/LX_BSP_VX180_5_4_0r1_ALPHA_26DEC07/linux-2.6.18
    CROSS_COMPILE = mips-linux-
    endif
    ifeq ($(PLATFORM),SIGMA)
    LINUX_SRC = /root/sigma/smp86xx_kernel_source_2.7.172.0/linux-2.6.15
    CROSS_COMPILE = /root/sigma/smp86xx_toolchain_2.7.172.0/build_mipsel_nofpu/staging_dir/bin/mipsel-linux-
    endif
    ifeq ($(PLATFORM),SIGMA_8622)
    LINUX_SRC = /home/snowpin/armutils_2.5.120.1/build_arm/linux-2.4.22-em86xx
    CROSS_COMPILE = /home/snowpin/armutils_2.5.120.1/toolchain/bin/arm-elf-
    CROSS_COMPILE_INCLUDE = /home/snowpin/armutils_2.5.120.1/toolchain/lib/gcc-lib/arm-elf/2.95.3
    endif
    ifeq ($(PLATFORM),STAR)
    LINUX_SRC = /opt/star/kernel/linux-2.4.27-star
    CROSS_COMPILE = /opt/star/tools/arm-linux/bin/arm-linux-
    endif
    ifeq ($(PLATFORM),RMI)
    LINUX_SRC = /opt/rmi/1.7.0/linux/src/
    CROSS_COMPILE = /opt/rmi/1.7.0/mipscross/nptl/bin/mips64-unknown-linux-gnu-
    endif
    ifeq ($(PLATFORM),RMI_64)
    LINUX_SRC = /opt/rmi/1.7.0/linux_64/src/
    CROSS_COMPILE = /opt/rmi/1.7.0/mipscross/nptl/bin/mips64-unknown-linux-gnu-
    endif
    ifeq ($(PLATFORM), RALINK_2880)
    LINUX_SRC = /project/stable/RT288x/RT288x_SDK/source/linux-2.4.x
    CROSS_COMPILE = /opt/buildroot-gdb/bin/mipsel-linux-
    endif
    ifeq ($(PLATFORM),RALINK_3052)
    LINUX_SRC = /home/peter/ap_soc/SDK_3_3_0_0/RT288x_SDK/source/linux-2.6.21.x
    CROSS_COMPILE = /opt/buildroot-gcc342/bin/mipsel-linux-uclibc-
    endif
    ifeq ($(PLATFORM),FREESCALE8377)
    LINUX_SRC = /opt/ltib-mpc8377_rds-20090309/rpm/BUILD/linux-2.6.25
    CROSS_COMPILE = /opt/freescale/usr/local/gcc-4.2.187-eglibc-2.5.187/powerpc-linux-gnu/bin/powerpc-linux-gnu-
    endif
    ifeq ($(PLATFORM),BL2348)
    LINUX_SRC = /home/sample/Customers/BroadLight/bl234x-linux-2.6.21-small-v29
    CROSS_COMPILE = mips-wrs-linux-gnu-
    endif
    ifeq ($(PLATFORM),BLUBB)
    LINUX_SRC = /home/sample/Customers/BroadLight/UBB/gmp20/linux-2.6.21-small
    CROSS_COMPILE = mips-wrs-linux-gnu-
    endif
    ifeq ($(PLATFORM),BLPMP)
    LINUX_SRC = /home/sample/Customers/BroadLight/UBB/pmp16/bl234x-linux-2.6.21-small-v30.2
    CROSS_COMPILE = mips-wrs-linux-gnu-
    endif
    ifeq ($(PLATFORM),PC)
    # Linux 2.6
    LINUX_SRC = /lib/modules/$(shell uname -r)/build
    # Linux 2.4 Change to your local setting
    #LINUX_SRC = /usr/src/linux-2.4
    LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/
    CROSS_COMPILE =
    endif
    ifeq ($(PLATFORM),IXP)
    LINUX_SRC = /project/stable/Gmtek/snapgear-uclibc/linux-2.6.x
    CROSS_COMPILE = arm-linux-
    endif
    ifeq ($(PLATFORM),INF_TWINPASS)
    # Linux 2.6
    #LINUX_SRC = /lib/modules/$(shell uname -r)/build
    # Linux 2.4 Change to your local setting
    LINUX_SRC = /project/stable/twinpass/release/2.0.1/source/kernel/opensource/linux-2.4.31/
    CROSS_COMPILE = mips-linux-
    endif
    ifeq ($(PLATFORM),INF_DANUBE)
    LINUX_SRC = /opt/danube/sdk/linux-2.6.16.x
    CROSS_COMPILE = mips-linux-
    ROOTDIR = /opt/danube/sdk
    export ROOTDIR
    endif
    ifeq ($(PLATFORM),INF_AR9)
    LINUX_SRC = /root/ar9/xR9_BSP1.2.2.0/source/kernel/opensource/linux-2.6.20/
    CROSS_COMPILE = /root/ar9/ifx-lxdb26-1.0.2/gcc-3.4.4/toolchain-mips/bin/
    endif
    ifeq ($(PLATFORM),INF_VR9)
    LINUX_SRC = /home/public/lantiq/VR9/UGW-4.2/build_dir/linux-ifxcpe_platform_vr9/linux-2.6.20.19
    CROSS_COMPILE = /home/public/lantiq/VR9/UGW-4.2/staging_dir/toolchain-mips_gcc-3.4.6_uClibc-0.9.29/bin/mips-linux-
    endif
    ifeq ($(PLATFORM),BRCM_6358)
    LINUX_SRC =
    CROSS_COMPILE =
    endif
    ifeq ($(PLATFORM),INF_AMAZON_SE)
    # Linux 2.6
    #LINUX_SRC = /lib/modules/$(shell uname -r)/build
    # Linux 2.4 Change to your local setting
    LINUX_SRC = /backup/ifx/3.6.2.2/source/kernel/opensource/linux-2.4.31
    #CROSS_COMPILE = mips-linux-
    #LINUX_SRC = /project/Infineon/3.6.2.2/source/kernel/opensource/linux-2.4.31
    CROSS_COMPILE = /opt/uclibc-toolchain/ifx-lxdb-1-2-3-external/gcc-3.3.6/toolchain-mips/R0208V35/mips-linux-uclibc/bin/
    endif
    ifeq ($(PLATFORM),ST)
    LINUX_SRC = /opt/STM/STLinux-2.2/devkit/sources/kernel/linux0039
    CROSS_COMPILE = /opt/STM/STLinux-2.2/devkit/sh4/bin/sh4-linux-
    ARCH := sh
    export ARCH
    endif
    ifeq ($(PLATFORM),CAVM_OCTEON)
    OCTEON_ROOT = /usr/local/Cavium_Networks/OCTEON-SDK
    LINUX_SRC = $(OCTEON_ROOT)/linux/kernel_2.6/linux
    CROSS_COMPILE = mips64-octeon-linux-gnu-
    endif
    ifeq ($(PLATFORM),CMPC)
    LINUX_SRC = /opt/fvt_11N_SDK_0807/fvt131x_SDK_11n/linux-2.6.17
    CROSS_COMPILE =
    endif
    ifeq ($(PLATFORM),SMDK)
    LINUX_SRC = /home/bhushan/itcenter/may28/linux-2.6-samsung
    CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
    endif
    ifeq ($(PLATFORM),KODAK_DC)
    SKD_SRC = C:/SigmaTel/DC1250_SDK_v1-9/sdk
    CROSS_COMPILE = $(cc)
    endif
    ifeq ($(PLATFORM),DM6446)
    LINUX_SRC = /home/fonchi/work/soc/ti-davinci
    endif
    ifeq ($(PLATFORM),MT85XX)
    LINUX_SRC = /home/john/MTK/BDP_Linux/linux-2.6.27
    CROSS_COMPILE = armv6z-mediatek-linux-gnueabi-
    endif
    ifeq ($(PLATFORM),NXP_TV550)
    LINUX_SRC = /data/tv550/kernel/linux-2.6.28.9
    LINUX_SRC_MODULE = /data/tv550/kernel/linux-2.6.28.9/drivers/net/wireless
    CROSS_COMPILE = /opt/embeddedalley/nxp_tv550/bin/mipsel-linux-
    endif
    ifeq ($(PLATFORM),MVL5)
    LINUX_SRC = /home2/charlestu/AP-VT3426/linux-2.6.18
    CROSS_COMPILE = /opt/montavista/pro/devkit/arm/v5t_le_mvl5/bin/arm_v5t_le-
    endif
    export OSABL RT28xx_DIR RT28xx_MODE LINUX_SRC CROSS_COMPILE CROSS_COMPILE_INCLUDE PLATFORM RELEASE CHIPSET RTMP_SRC_DIR LINUX_SRC_MODULE TARGET
    # The targets that may be used.
    PHONY += all build_tools test UCOS THREADX LINUX release prerelease clean uninstall install libwapi osabl
    all: build_tools $(TARGET)
    build_tools:
    $(MAKE) -C tools
    $(RT28xx_DIR)/tools/bin2h
    test:
    $(MAKE) -C tools test
    LINUX:
    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
    cp -f os/linux/Makefile.4 $(RT28xx_DIR)/os/linux/Makefile
    $(MAKE) -C $(RT28xx_DIR)/os/linux/
    cp -f $(RT28xx_DIR)/os/linux/rt$(CHIPSET)sta.o /tftpboot
    else
    cp -f os/linux/Makefile.6 $(RT28xx_DIR)/os/linux/Makefile
    ifeq ($(PLATFORM),DM6446)
    $(MAKE) ARCH=arm CROSS_COMPILE=arm_v5t_le- -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
    else
    ifeq ($(PLATFORM),FREESCALE8377)
    $(MAKE) ARCH=powerpc CROSS_COMPILE=$(CROSS_COMPILE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
    else
    $(MAKE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
    endif
    endif
    endif
    clean:
    ifeq ($(TARGET), LINUX)
    cp -f os/linux/Makefile.clean os/linux/Makefile
    $(MAKE) -C os/linux clean
    rm -rf os/linux/Makefile
    endif
    uninstall:
    ifeq ($(TARGET), LINUX)
    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
    $(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.4 uninstall
    else
    $(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.6 uninstall
    endif
    endif
    install:
    ifeq ($(TARGET), LINUX)
    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
    $(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.4 install
    else
    $(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.6 install
    endif
    endif
    # Declare the contents of the .PHONY variable as phony. We keep that information in a variable
    .PHONY: $(PHONY)
    Here is the config.mk
    # Support ATE function
    HAS_ATE=n
    # Support ATE NEW TXCONT solution
    HAS_NEW_TXCONT=n
    # Support QA ATE function
    HAS_QA_SUPPORT=n
    # Support XLINK mode
    HAS_XLINK=n
    # Support Wpa_Supplicant
    HAS_WPA_SUPPLICANT=y
    # Support Native WpaSupplicant for Network Maganger
    HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
    #Support Net interface block while Tx-Sw queue full
    HAS_BLOCK_NET_IF=n
    #Support DFS function
    HAS_DFS_SUPPORT=n
    #Support Carrier-Sense function
    HAS_CS_SUPPORT=n
    # Support for Multiple Cards
    HAS_MC_SUPPORT=n
    #Support for IEEE802.11e DLS
    HAS_QOS_DLS_SUPPORT=n
    #Support for EXT_CHANNEL
    HAS_EXT_BUILD_CHANNEL_LIST=n
    #Support for Net-SNMP
    HAS_SNMP_SUPPORT=n
    #Support features of 802.11n Draft3
    HAS_DOT11N_DRAFT3_SUPPORT=y
    #Support features of Single SKU.
    HAS_SINGLE_SKU_SUPPORT=n
    #Support features of 802.11n
    HAS_DOT11_N_SUPPORT=y
    HAS_KTHREAD_SUPPORT=n
    #Support statistics count
    HAS_STATS_COUNT=y
    #Support USB_BULK_BUF_ALIGMENT
    HAS_USB_BULK_BUF_ALIGMENT=n
    #Support for USB_SUPPORT_SELECTIVE_SUSPEND
    HAS_USB_SUPPORT_SELECTIVE_SUSPEND=n
    #Client support WDS function
    HAS_CLIENT_WDS_SUPPORT=n
    #Support for Bridge Fast Path & Bridge Fast Path function open to other module
    HAS_BGFP_SUPPORT=n
    HAS_BGFP_OPEN_SUPPORT=n
    #Support MAC80211 LINUX-only function
    HAS_CFG80211_SUPPORT=n
    #Support RFKILL hardware block/unblock LINUX-only function
    HAS_RFKILL_HW_SUPPORT=n
    HAS_RESOURCE_PRE_ALLOC=y
    HAS_LED_CONTROL_SUPPORT=y
    CC := $(CROSS_COMPILE)gcc
    LD := $(CROSS_COMPILE)ld
    WFLAGS := -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs
    WFLAGS += -DSYSTEM_LOG_SUPPORT -DRT28xx_MODE=$(RT28xx_MODE) -DCHIPSET=$(CHIPSET)
    ifeq ($(HAS_RESOURCE_PRE_ALLOC),y)
    WFLAGS += -DRESOURCE_PRE_ALLOC
    endif
    ifeq ($(HAS_KTHREAD_SUPPORT),y)
    WFLAGS += -DKTHREAD_SUPPORT
    endif
    # config for STA mode
    ifeq ($(RT28xx_MODE),STA)
    WFLAGS += -DCONFIG_STA_SUPPORT -DDBG
    ifeq ($(HAS_XLINK),y)
    WFLAGS += -DXLINK_SUPPORT
    endif
    ifeq ($(HAS_WPA_SUPPLICANT),y)
    WFLAGS += -DWPA_SUPPLICANT_SUPPORT
    ifeq ($(HAS_NATIVE_WPA_SUPPLICANT_SUPPORT),y)
    WFLAGS += -DNATIVE_WPA_SUPPLICANT_SUPPORT -DCREDENTIAL_STORE -DPROFILE_STORE
    endif
    endif
    ifeq ($(HAS_ATE),y)
    WFLAGS += -DRALINK_ATE
    WFLAGS += -DCONFIG_RT2880_ATE_CMD_NEW
    ifeq ($(HAS_NEW_TXCONT),y)
    WFLAGS += -DNEW_TXCONT
    endif
    ifeq ($(HAS_QA_SUPPORT),y)
    WFLAGS += -DRALINK_QA
    endif
    endif
    ifeq ($(HAS_SNMP_SUPPORT),y)
    WFLAGS += -DSNMP_SUPPORT
    endif
    ifeq ($(HAS_QOS_DLS_SUPPORT),y)
    WFLAGS += -DQOS_DLS_SUPPORT
    endif
    ifeq ($(HAS_DOT11_N_SUPPORT),y)
    WFLAGS += -DDOT11_N_SUPPORT
    ifeq ($(HAS_DOT11N_DRAFT3_SUPPORT),y)
    WFLAGS += -DDOT11N_DRAFT3
    endif
    endif
    ifeq ($(HAS_CS_SUPPORT),y)
    WFLAGS += -DCARRIER_DETECTION_SUPPORT
    endif
    ifeq ($(HAS_STATS_COUNT),y)
    WFLAGS += -DSTATS_COUNT_SUPPORT
    endif
    ifeq ($(HAS_USB_SUPPORT_SELECTIVE_SUSPEND),y)
    WFLAGS += -DUSB_SUPPORT_SELECTIVE_SUSPEND -DCONFIG_PM
    endif
    ifeq ($(HAS_CFG80211_SUPPORT),y)
    WFLAGS += -DRT_CFG80211_SUPPORT
    ifeq ($(HAS_RFKILL_HW_SUPPORT),y)
    WFLAGS += -DRFKILL_HW_SUPPORT
    endif
    endif
    endif
    # endif of ifeq ($(RT28xx_MODE),STA)
    # Common compiler flag
    ifeq ($(HAS_EXT_BUILD_CHANNEL_LIST),y)
    WFLAGS += -DEXT_BUILD_CHANNEL_LIST
    endif
    ifeq ($(HAS_IDS_SUPPORT),y)
    WFLAGS += -DIDS_SUPPORT
    endif
    ifeq ($(OSABL),YES)
    WFLAGS += -DEXPORT_SYMTAB
    endif
    ifeq ($(HAS_CLIENT_WDS_SUPPORT),y)
    WFLAGS += -DCLIENT_WDS
    endif
    ifeq ($(HAS_BGFP_SUPPORT),y)
    WFLAGS += -DBG_FT_SUPPORT
    endif
    ifeq ($(HAS_BGFP_OPEN_SUPPORT),y)
    WFLAGS += -DBG_FT_OPEN_SUPPORT
    endif
    ifeq ($(HAS_LED_CONTROL_SUPPORT),y)
    WFLAGS += -DLED_CONTROL_SUPPORT
    endif
    # ChipSet specific definitions.
    ifeq ($(CHIPSET),2870)
    WFLAGS +=-DRTMP_MAC_USB -DRTMP_USB_SUPPORT -DRT2870 -DRT28xx -DRTMP_TIMER_TASK_SUPPORT -DA_BAND_SUPPORT
    CHIPSET_DAT = 2870
    ifeq ($(HAS_DFS_SUPPORT),y)
    WFLAGS += -DDFS_SOFTWARE_SUPPORT
    endif
    endif
    ifeq ($(CHIPSET),3572)
    WFLAGS +=-DRTMP_MAC_USB -DRTMP_USB_SUPPORT -DRT2870 -DRT28xx -DRT30xx -DRT35xx -DRTMP_TIMER_TASK_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DA_BAND_SUPPORT -DSPECIFIC_VCORECAL_SUPPORT
    CHIPSET_DAT = 2870
    ifeq ($(HAS_DFS_SUPPORT),y)
    WFLAGS += -DDFS_SOFTWARE_SUPPORT
    endif
    endif
    ifeq ($(PLATFORM),5VT)
    #WFLAGS += -DCONFIG_5VT_ENHANCE
    endif
    ifeq ($(HAS_BLOCK_NET_IF),y)
    WFLAGS += -DBLOCK_NET_IF
    endif
    ifeq ($(HAS_DFS_SUPPORT),y)
    WFLAGS += -DDFS_SUPPORT
    endif
    ifeq ($(HAS_MC_SUPPORT),y)
    WFLAGS += -DMULTIPLE_CARD_SUPPORT
    endif
    ifeq ($(PLATFORM),RMI)
    WFLAGS += -DRT_BIG_ENDIAN
    endif
    ifeq ($(PLATFORM),BL2348)
    WFLAGS += -DRT_BIG_ENDIAN
    endif
    ifeq ($(PLATFORM),BLUBB)
    WFLAGS += -DRT_BIG_ENDIAN
    endif
    ifeq ($(PLATFORM),BLPMP)
    WFLAGS += -DRT_BIG_ENDIAN
    endif
    ifeq ($(PLATFORM),RMI_64)
    WFLAGS += -DRT_BIG_ENDIAN
    endif
    ifeq ($(PLATFORM),IXP)
    WFLAGS += -DRT_BIG_ENDIAN
    endif
    ifeq ($(PLATFORM),IKANOS_V160)
    WFLAGS += -DRT_BIG_ENDIAN -DIKANOS_VX_1X0
    endif
    ifeq ($(PLATFORM),IKANOS_V180)
    WFLAGS += -DRT_BIG_ENDIAN -DIKANOS_VX_1X0
    endif
    ifeq ($(PLATFORM),INF_TWINPASS)
    WFLAGS += -DRT_BIG_ENDIAN -DINF_TWINPASS
    endif
    ifeq ($(PLATFORM),INF_DANUBE)
    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
    # Linux 2.4
    WFLAGS += -DINF_DANUBE -DRT_BIG_ENDIAN
    else
    # Linux 2.6
    WFLAGS += -DRT_BIG_ENDIAN
    endif
    endif
    ifeq ($(PLATFORM),INF_AR9)
    WFLAGS += -DRT_BIG_ENDIAN -DINF_AR9
    # support MAPI function for AR9.
    #WFLAGS += -DAR9_MAPI_SUPPORT
    endif
    ifeq ($(PLATFORM),INF_VR9)
    WFLAGS += -DRT_BIG_ENDIAN -DINF_AR9 -DINF_VR9
    endif
    ifeq ($(PLATFORM),CAVM_OCTEON)
    WFLAGS += -DRT_BIG_ENDIAN
    endif
    ifeq ($(PLATFORM),BRCM_6358)
    WFLAGS += -DRT_BIG_ENDIAN -DBRCM_6358
    endif
    ifeq ($(PLATFORM),INF_AMAZON_SE)
    WFLAGS += -DRT_BIG_ENDIAN -DINF_AMAZON_SE
    endif
    ifeq ($(PLATFORM),RALINK_3052)
    WFLAGS += -DPLATFORM_RALINK_3052
    endif
    ifeq ($(PLATFORM),FREESCALE8377)
    #EXTRA_CFLAGS := -v -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include $(WFLAGS)-O2 -Wall -Wstrict-prototypes -Wno-trigraphs
    #export EXTRA_CFLAGS
    WFLAGS += -DRT_BIG_ENDIAN
    EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
    endif
    ifeq ($(PLATFORM),ST)
    #WFLAGS += -DST
    WFLAGS += -DST
    endif
    #kernel build options for 2.4
    # move to Makefile outside LINUX_SRC := /opt/star/kernel/linux-2.4.27-star
    ifeq ($(PLATFORM),RALINK_3052)
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -finline-limit=100000 -march=mips2 -mabi=32 -Wa,--trap -DLINUX -nostdinc -iwithprefix include $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM), RALINK_2880)
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -finline-limit=100000 -march=mips2 -mabi=32 -Wa,--trap -DLINUX -nostdinc -iwithprefix include $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),STAR)
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=4 -march=armv4 -mshort-load-bytes -msoft-float -Uarm -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),SIGMA)
    CFLAGS := -D__KERNEL__ -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -DEM86XX_CHIP=EM86XX_CHIPID_TANGO2 -DEM86XX_REVISION=6 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT2860_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -DMODULE $(WFLAGS) -DSIGMA863X_PLATFORM
    export CFLAGS
    endif
    ifeq ($(PLATFORM),SIGMA_8622)
    CFLAGS := -D__KERNEL__ -I$(CROSS_COMPILE_INCLUDE)/include -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fno-common -pipe -fno-builtin -D__linux__ -DNO_MM -mapcs-32 -march=armv4 -mtune=arm7tdmi -msoft-float -DMODULE -mshort-load-bytes -nostdinc -iwithprefix -DMODULE $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),5VT)
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=apcs-gnu -mno-thumb-interwork -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm926ej-s --param max-inline-insns-single=40000 -Uarm -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),IKANOS_V160)
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT28xx_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -march=lx4189 -Wa, -DMODULE $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),IKANOS_V180)
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT28xx_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -mips32r2 -Wa, -DMODULE $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),INF_TWINPASS)
    CFLAGS := -D__KERNEL__ -DMODULE -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -G 0 -mno-abicalls -fno-pic -march=4kc -mips32 -Wa,--trap -pipe -mlong-calls $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),INF_DANUBE)
    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
    CFLAGS := -I$(RT28xx_DIR)/include $(WFLAGS) -Wundef -fno-strict-aliasing -fno-common -ffreestanding -Os -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -msoft-float -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-generic
    else
    CFLAGS := -I$(RT28xx_DIR)/include $(WFLAGS) -Wundef -fno-strict-aliasing -fno-common -ffreestanding -Os -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -msoft-float -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-generic
    endif
    export CFLAGS
    endif
    ifeq ($(PLATFORM),INF_AR9)
    CFLAGS := -I$(RT28xx_DIR)/include $(WFLAGS) -Wundef -fno-strict-aliasing -fno-common -fno-pic -ffreestanding -Os -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -msoft-float -mabi=32 -mlong-calls -march=mips32r2 -mtune=34kc -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-generic
    export CFLAGS
    endif
    ifeq ($(PLATFORM),INF_VR9)
    CFLAGS := -I$(RT28xx_DIR)/include $(WFLAGS) -Wundef -fno-strict-aliasing -fno-common -fno-pic -ffreestanding -Os -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -msoft-float -mabi=32 -mlong-calls -march=mips32r2 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-generic
    export CFLAGS
    endif
    ifeq ($(PLATFORM),BRCM_6358)
    CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include -nostdinc -iwithprefix include -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -I $(LINUX_SRC)/include/asm/gcc -G 0 -mno-abicalls -fno-pic -pipe -finline-limit=100000 -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-bcm963xx -I$(LINUX_SRC)/include/asm-mips/mach-generic -Os -fomit-frame-pointer -Wdeclaration-after-statement -DMODULE -mlong-calls
    export CFLAGS
    endif
    ifeq ($(PLATFORM),INF_AMAZON_SE)
    CFLAGS := -D__KERNEL__ -DMODULE=1 -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -DCONFIG_IFX_ALG_QOS -DCONFIG_WAN_VLAN_SUPPORT -fomit-frame-pointer -DIFX_PPPOE_FRAME -G 0 -fno-pic -mno-abicalls -mlong-calls -pipe -finline-limit=100000 -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap -nostdinc -iwithprefix include $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),ST)
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -O2 -Wundef -Wstrict-prototypes -Wno-trigraphs -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-aliasing -fno-common -fomit-frame-pointer -ffreestanding -m4-nofpu -o $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),PC)
    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
    # Linux 2.4
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h $(WFLAGS)
    export CFLAGS
    else
    # Linux 2.6
    EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
    endif
    endif
    #If the kernel version of RMI is newer than 2.6.27, please change "CFLAGS" to "EXTRA_FLAGS"
    ifeq ($(PLATFORM),RMI)
    EXTRA_CFLAGS := -D__KERNEL__ -DMODULE=1 -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -DCONFIG_IFX_ALG_QOS -DCONFIG_WAN_VLAN_SUPPORT -fomit-frame-pointer -DIFX_PPPOE_FRAME -G 0 -fno-pic -mno-abicalls -mlong-calls -pipe -finline-limit=100000 -mabi=32 -G 0 -mno-abicalls -fno-pic -pipe -msoft-float -march=xlr -ffreestanding -march=xlr -Wa,--trap, -nostdinc -iwithprefix include $(WFLAGS)
    export EXTRA_CFLAGS
    endif
    ifeq ($(PLATFORM),RMI_64)
    EXTRA_CFLAGS := -D__KERNEL__ -DMODULE=1 -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -DCONFIG_IFX_ALG_QOS -DCONFIG_WAN_VLAN_SUPPORT -fomit-frame-pointer -DIFX_PPPOE_FRAME -G 0 -fno-pic -mno-abicalls -mlong-calls -pipe -finline-limit=100000 -mabi=64 -G 0 -mno-abicalls -fno-pic -pipe -msoft-float -march=xlr -ffreestanding -march=xlr -Wa,--trap, -nostdinc -iwithprefix include $(WFLAGS)
    export EXTRA_CFLAGS
    endif
    ifeq ($(PLATFORM),IXP)
    CFLAGS := -v -D__KERNEL__ -DMODULE -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mbig-endian -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale -malignment-traps -msoft-float $(WFLAGS)
    EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include -mbig-endian
    export CFLAGS
    endif
    ifeq ($(PLATFORM),SMDK)
    EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
    endif
    ifeq ($(PLATFORM),CAVM_OCTEON)
    EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include \
    -mabi=64 $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),DM6446)
    CFLAGS := -nostdinc -iwithprefix include -D__KERNEL__ -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -fno-omit-frame-pointer -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mlittle-endian -mabi=apcs-gnu -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi -msoft-float -Uarm -Wdeclaration-after-statement -c -o $(WFLAGS)
    export CFLAGS
    endif
    ifeq ($(PLATFORM),BL2348)
    CFLAGS := -D__KERNEL__ -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -DEM86XX_CHIP=EM86XX_CHIPID_TANGO2 -DEM86XX_REVISION=6 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT2860_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -DMODULE $(WFLAGS) -DSIGMA863X_PLATFORM -DEXPORT_SYMTAB -DPLATFORM_BL2348
    export CFLAGS
    endif
    ifeq ($(PLATFORM),BLUBB)
    CFLAGS := -D__KERNEL__ -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -DEM86XX_CHIP=EM86XX_CHIPID_TANGO2 -DEM86XX_REVISION=6 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT2860_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -DMODULE $(WFLAGS) -DSIGMA863X_PLATFORM -DEXPORT_SYMTAB -DPLATFORM_BL2348
    export CFLAGS
    endif
    ifeq ($(PLATFORM),BLPMP)
    CFLAGS := -D__KERNEL__ -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -DEM86XX_CHIP=EM86XX_CHIPID_TANGO2 -DEM86XX_REVISION=6 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT2860_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -DMODULE $(WFLAGS) -DSIGMA863X_PLATFORM -DEXPORT_SYMTAB
    export CFLAGS
    endif
    ifeq ($(PLATFORM),MT85XX)
    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
    # Linux 2.4
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h $(WFLAGS)
    export CFLAGS
    else
    # Linux 2.6
    EXTRA_CFLAGS += $(WFLAGS) -I$(RT28xx_DIR)/include
    EXTRA_CFLAGS += -D _NO_TYPEDEF_BOOL_ \
    -D _NO_TYPEDEF_UCHAR_ \
    -D _NO_TYPEDEF_UINT8_ \
    -D _NO_TYPEDEF_UINT16_ \
    -D _NO_TYPEDEF_UINT32_ \
    -D _NO_TYPEDEF_UINT64_ \
    -D _NO_TYPEDEF_CHAR_ \
    -D _NO_TYPEDEF_INT32_ \
    -D _NO_TYPEDEF_INT64_ \
    endif
    endif
    ifeq ($(PLATFORM),NXP_TV550)
    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
    # Linux 2.4
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=mips -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h $(WFLAGS)
    export CFLAGS
    else
    # Linux 2.6
    EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
    endif
    endif
    ifeq ($(PLATFORM),MVL5)
    CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mno-thumb-interwork -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm926ej-s --param max-inline-insns-single=40000 -Uarm -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE $(WFLAGS)
    export CFLAGS
    endif

  • Systemd-networkd service takes too long on Compaq Mini Cq10-120LA

    Hi, I'm Oppen. I've been using Arch for around 6 months now, and I'm until now very pleased with it.
    However, I've noticed something that I find odd. I don't consider it necessarily a problem, but it sparks my curiosity.
    I'm running Arch in three different computers.
    One of them is relatively new (well, new, where I'm from, means a 2012 model), an HP Envy m6, running on an AMD A10.
    Another one is relatively old, a Via K8M800, with an Athlon64 x2.
    Both of them present similar boot times in all of the services I'd set up, which are pretty much the same on all of my boxes.
    Then, I have this netbook. It also shows similar times for all services, except for networkd, which takes 10-15 times more than in the other two boxes, with over 5 seconds to finish. I'd like to understand why this is happening, and if possible, to fix it so the boot time will shrink.
    So, I'll continue explaining which are my guesses, any criticism, corrections or ideas are welcome:
    - since my other two boxes run on AMD64, both of them with 64 bits Arch, and this one is an Atom running on i686 Arch, one lead would point to a lack of specific optimizations. But if that's the case, it remains unclear why it only happens with networkd.
    - another guess would point to actually the handshaking taking longer, either because the driver or hardware for wifi is slower or something related to either wpa_supplicant or networkd.
    I tried looking in the forums and google to see if there were any similar issue reported, but I had no luck.
    Thanks in advance for any suggestions or ideas,
    Mario.

    For systemd-networkd, last boot, I get this log.
    ene 29 19:46:41 westeroos systemd-networkd[213]: rtnl: received address for nonexistent link (1), ignoring
    ene 29 19:46:41 westeroos systemd-networkd[213]: rtnl: received address for nonexistent link (1), ignoring
    ene 29 19:46:41 westeroos systemd-networkd[213]: wlan0 : link configured
    ene 29 19:46:43 westeroos systemd-networkd[213]: wlan0 : gained carrier
    I can't make sense of the first two lines, but otherwise it doesn't seem to point out any problems.
    For [email protected], I get this:
    ene 29 08:02:29 westeroos wpa_supplicant[207]: Successfully initialized wpa_supplicant
    ene 29 08:02:29 westeroos wpa_supplicant[207]: wlan0: SME: Trying to authenticate with e0:24:7f:e0:57:4d (SSID='5744' freq=2422 MHz)
    ene 29 08:02:29 westeroos wpa_supplicant[207]: wlan0: Trying to associate with e0:24:7f:e0:57:4d (SSID='5744' freq=2422 MHz)
    ene 29 08:02:29 westeroos wpa_supplicant[207]: wlan0: Associated with e0:24:7f:e0:57:4d
    ene 29 08:02:29 westeroos wpa_supplicant[207]: wlan0: WPA: Key negotiation completed with e0:24:7f:e0:57:4d [PTK=CCMP GTK=CCMP]
    ene 29 08:02:29 westeroos wpa_supplicant[207]: wlan0: CTRL-EVENT-CONNECTED - Connection to e0:24:7f:e0:57:4d completed [id=0 id_str=]
    ene 29 08:02:29 westeroos wpa_supplicant[207]: wlan0: CTRL-EVENT-DISCONNECTED bssid=e0:24:7f:e0:57:4d reason=3 locally_generated=1
    ene 29 08:02:29 westeroos wpa_supplicant[207]: wlan0: CTRL-EVENT-TERMINATING
    Last edited by Oppen (2015-01-30 00:17:09)

  • Managing WPA wireless with systemd-networkd ?

    Hi guys,
    I've moved to systemd-networkd to manage my wired interface.
    http://dabase.com/blog/Good_riddance_netctl/
    Has anyone successfully managed to get their /etc/wpa_supplicant.conf working through  systemd-networkd too?

    WonderWoofy wrote:
    Okay, so I'll walk you through this since there is really not a whole lot of documentation on the subject.  This assumes that your NIC is wlan0, your SSID is MyNetwork, and the password is SuperSecretPassphrase.
    You need to create a wpa_supplicant-wlan0.conf.  So use wpa_passphrase to generate one:
    # wpa_passphrase MyNetwork SuperSecretPassphrase > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
    Enable it so that it runs on boot:
    # systemctl enable [email protected]
    Now make a file at /etc/systemd/network/00-wireless-dhcp.network (it can really be named whatever you want):
    [Match]
    Name=wlan0
    [Network]
    DHCP=yes
    Now ensure that systemd-networkd.service is enabled.
    # systemctl enable systemd-networkd.service
    Reboot, and it should be working.
    Edit: cleanup
    Edit2: Okay, that is not working for me either...
    Edit3: Okay nevermind, I just made a typo and named my file 00-wireless-dhcp.ntwork
    Edit4: I forgot to mention that you also need to ensure that /etc/resolv.conf is a symlink to /run/systemd/network/resolv.conf.  As a hack (since I don't use systemd-networkd regularly) I have the following:
    $ cat /etc/systemd/system/systemd-networkd.service.d/resolv.conf
    [Service]
    ExecStartPost=/usr/bin/ln -sf /run/systemd/network/resolv.conf /etc/resolv.conf
    ExecStopPost=/usr/bin/rm /etc/resolv.conf
    ExecStopPost=/usr/bin/touch /etc/resolv.conf
    This needs to go to the wiki!

Maybe you are looking for

  • How Do I Change Country on My PSN Account??

    I've recently moved from Ireland to the UK and I'm trying to change the country on my PSN account so I can replace my Irish payment card with an English one and also be able to see the prices in sterling. Only problem is that I can't seem to change t

  • Inter-company Sub-contracting

    Dear Experts, I am working on a scenerio where Plant A is sending Components to Plant B. Then In plant B the processing is done on those components and a semifinished material is made. Then the Semifinished Material is recieved back into plant A. I a

  • Wi-Fi not working with iPhone 4 and iPod 3

    We have 2 iPhone 4's and 1 iPod 3. We have never had a problem with Wi-Fi until the last 3 weeks. Now neither of our iPhones/iPods recognise Wi-Fi or have worked since then. Our iMac and laptops all connect to the Wi-Fi without any problems. When fri

  • Template view fine in test browser but not when a page is created from it

    I'm trying to recreate a template page from my site using different code for the drop down menu at the top. The template behaves properly when i test it in Safari vs. 5.0.6 but when i test a page made from that template (using the File>New> Page from

  • Call & SMS logging on BES

    How to prevent call logs and SMS details from the Balckberry handheld getting Synchronised on to the corporate BES server? Is there a setting on handheld that can be configured to block this?