airport – the Little Known Command Line Wireless Utility

Jan 18, 2007 - 73 Comments

Strangely hidden from the casual user is a spiffy command line utility that allows you to view, configure, and troubleshoot your Mac’s wireless connection. It doesn’t appear to be well documented, and judging by the obscure location of the command, Apple probably didn’t think it would be too useful for the average Mac user. But the hidden command line airport tool is very useful indeed, so here is how to access it, and how you can use it too.

The first thing you’ll want to do is create a symbolic link to the airport command, because it is situated in a very inconvenient location for quick usage. Doing so is very easy, in the Terminal type the following:


sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport

The above may be a bit hard to read on some browsers, so alternatively you can use the following (it does the same thing, just split into two commands):

$ cd /usr/sbin
$ sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

This will prompt you for a root password, enter it and hit return.

Yes, that giant cryptic path through the depths of OS X is where Apple hid the wonderful airport utility, but by running the above command you have just linked that long path to the much shorter ‘airport’ , great. You’ll probably find the -I flag and -S flags to be most useful and informative, so type airport -I at the Terminal prompt, which will return something like the following:


$ airport -I
commQuality: 75
rawQuality: 59
avgSignalLevel: -40
avgNoiseLevel: -97
linkStatus: ESS
portType: Client
lastTxRate: 11
maxRate: 11
lastAssocStatus: 1
BSSID: 00:06:5b:2a:37:10
SSID: OSXNetwork
Security: none
$

Displayed is detailed information on signal quality, noise, security, and other WiFi network attributes. The airport command is more powerful than just being able to list information on the current wireless network though, you can actually manually adjust many settings and troubleshoot too. While there is no manual page for the airport command, attaching the -h command to it will issue a brief list of flags and explanations of their function. Enjoy!

Enjoy this tip? Subscribe to the OSXDaily newsletter to get more of our great Apple tips, tricks, and important news delivered to your inbox! Enter your email address below:

Related articles:

Posted by: OSXDaily in Command Line, Mac OS X, Tips & Tricks

73 Comments

» Comments RSS Feed

  1. anon says:

    That’s a great tip – nice find, OSXDaily.

  2. Shlomo says:

    Awesome! Thanks for the cool util

  3. Alpharetta says:

    HOLY MOLY BEST EVER!!

  4. Here’s another vote for “holy moly”! Now I’ll have to go dig through the system for any and all hidden executable binaries. Who knows what else is hidden?!

  5. nate says:

    There’s documentation available, just type:

    $airport –help

    Its not too informative, but there’s some info there.

  6. KB says:

    This tip has ended hours of pulling my hair out. I’d been having trouble with my Mac mini computer automatically joining random wireless networks rather than the *one* network I’d ever want it to join … and this is despite using Network Preferences to configure Airport to join only preferred networks by default; to ask before joining an open network; and to require an admin password to change wireless networks.

    I wrote a script which runs “airport -I” to notice when I’m not connected to my desired network and then to run airport –associate to rejoin. I’m using cron to run this script every few minutes, and my logs show this fixing things several times a day so far.

    This also allowed me to add a StartupItem so that I can have my mini (which runs my web site, etc.) join the correct network on startup before anyone even logs in. Before I found this tip, I couldn’t find a way to get my mini to join any wireless network until I logged in.

    • gurgan says:

      If you could please share that script for having airport connect pre-login, that would be awesome. I need airport to be connected at login so I can access network accounts. Silly Apple.

  7. anon says:

    Anyone know how to use this command line util to turn airport off?

  8. Mifilte says:

    airport -z unjoins all networks

  9. AirPorter says:

    To actually turn airport off, you simply take the AirPort network interface down like so:

    sudo ifconfig en1 down

  10. anon says:

    Still works in Leo! (That’s ‘cool’ for Leopard, Googlebots)

  11. tuco says:

    How do you spoof your MAC address on a PowerBook wireless card?

    $ ifconfig lladdr xx:xx:xx:xx:xx

    works on /dev/en0 but no luck on /dev/en1.

  12. Marco says:

    Hi man!
    This command is very useful, but I have a question:
    airport -I gives info about signal strenght with the line

    avgSignalLevel: -40

    I think this value is in dB.

    When you type airport -s, you have the list of all networks avaiable, but which is the parameter which identifies the signal strenght? I think it could be

    Sig 56

    But it is in Watt or what?

    • WifiAdminGuy says:

      Signal Strength is the “RSSI” field. It is in units of dB. Since we’re in power, when you double the signal strength you will see a 3 dB increase. Same with average signal level.

      (truth: I’m guessing this is dB because all the linux driver wifi code I have seen reports that all major cards report in dB)

  13. David says:

    Is there a way to use this utility to maintain a wireless connection? At work, I use my MacBook Pro with a wireless network (a building full of PC’s) that, when idle for very long, breaks the wireless connection, requiring logging on again. I have been unable to find a “stay connected” utilitiy for wireless like we used to have with modems.

    Thanks

  14. @David

    I’ve run into similar problems before with some networks that seem to have a strict policy on idling. To circumvent this, try constantly pinging a server (either on the network or outside). To do this, open your Terminal (spotlight for Terminal) and type the following:

    ping google.com

    instead of google.com you can use your LAN router or whatever other IP (10.1.1.1). Just let that run in the background while you’re doing things, and your connection should stay alive since small amounts of data are constantly being sent.

    Hope that helps,

    Paul

  15. Ryan says:

    Someone please help me. I have tried to use this command to associate via BSSID and cannot get it to work. So far as I can tell, all the other commands work fine. I have several routers that have the same SSID and I need to be able to specify which one to connect to. Can someone help me?

  16. vchoi says:

    Very nice command. Saved my day as I need to troubleshoot problems in my wireless network.

  17. […] As a temporary solution, I found how to re-connect from a command line, thanks to the blog article “airport – the Little Known Command Line Wireless Utility”. I’ve created the file reconnect.sh and run it when required: […]

  18. Ricardo says:

    I have do this implementation in python to automatically reconnect to my wireless if disconnected:

    import os
    import time
    import logging

    CHECK_PERIOD_IN_SECONDS = 60
    TEMPFILE = “connection-info.txt”
    KEYWORD = “MyPlace”
    LOGFILE = “airport-reconnect.log”

    def is_connected():
    # Generate connection info
    os.system(“/usr/sbin/airport -I >” + TEMPFILE)
    # Read connection info
    f = open(TEMPFILE, “r”)
    data = f.read()
    f.close()
    # Check
    return KEYWORD in data

    def connect():
    os.system(“/usr/sbin/airport -a”)
    logging.info(“Re-connected.”)

    if __name__ == “__main__”:

    # Logger
    try: os.remove(LOGFILE)
    except: pass
    logging.basicConfig(level=logging.DEBUG,
    format=’%(asctime)s %(levelname)-8s %(message)s’,
    filename=LOGFILE,
    filemode=’w’)

    # Loop
    while True:
    if not is_connected():
    connect()
    time.sleep(CHECK_PERIOD_IN_SECONDS)

  19. walter says:

    I’m looking for a way to automate the wireless configurations of hundreds of laptops in my school.

    Can anyone point me to a solution?

    I’m configuring the wireless using peap with mschap v2 and a certificate, all the laptops are macbooks osx 10.4

    Thanks.

  20. Weja says:

    Guys I really need your help ASAP :( I have this huge problem in turning my AirPort on. I cant select the Airport’s checkbox in my network port configurations and I dont know why??? I can select and deselect the rest of the ports (bluetooth, internal modem, built in ethernet, etc) but NOT the AirPort!!!!
    HELP MEEEEEEEEEEEEE

    Thanks

  21. […] Next I remembered a very useful post about How to get the wireless signal strenght from you airport and I decided to put togheter my (very small) knowledges of RubyCocoa to create a script that make your mac to work as an hot spot detector. […]

  22. […] via: airport – the Little Known Command Line Wireless Utility – OS X Daily Search […]

  23. […] The Little Known Command Line Wireless Utility […]

  24. bm says:

    I’m having the same problem as Ryan (above), i can’t seem to get it to connect to one of multiple same-SSIDed routers using the BSSID. Anyone figure this out?

    10.4

  25. 3cr0wn says:

    if you are just trying to disconnect your connection

    $airport -z

    to scan for available networks

    $airport -s

    to join you need root access

    $sudo airport -A

    you will then be prompted for the SSID you’d like to join.

    Great find, thanks for sharing.

  26. Jason says:

    You can add some code to automatically connect you the the SSID you like.

    $sudo airport -A –associate=SSID –password=PASSWORD

    Unfortunately, I can’t seem to figure out how to connect to SSIDs that are not broadcasted. Anyone have an idea?

  27. […]   My MacBook usually didn’t feel like reconnecting to my AirPort after waking up from sleep mode. I’ve finally been able to solve that problem usingthe aiport command line utility and SleepWatcher. Simply installed SleepWatcher, and created the following little script in~/.wakeup: […]

  28. anonymous says:

    macbook:Resources root# airport -h
    airport AirPort v.522.4 (522.4.0)
    Supported arguments:
    -z –disassociate Disassociate from any network
    -i[] –ibss=[] Create IBSS
    -x –xml Print info as XML
    -s[] –scan=[] Perform a wireless broadcast scan.
    Will perform a directed scan if the optional is provided
    -r –repeats= Repeat the command the specified number of times
    -A[] –associate=[] Associate to network.
    Will prompt for network name if arg is not specified
    and if necessary, for a password if the network is using WEP or WPA.
    The following additional arguments may be specified with this command:
    –bssid= Specify BSSID to associate with
    –password= Specify a WEP key or WPA password
    -I –getinfo Print current wireless status, e.g. signal info, BSSID, port type etc.
    -P –psk= Create PSK from specified pass phrase and SSID.
    The following additional arguments must be specified with this command:
    –ssid= Specify SSID when creating a PSK
    -c[] –channel=[] Set arbitrary channel on the card
    -h –help Show this help
    macbook:Resources root#

  29. […] Handy little wireless command line command. […]

  30. […] Re: Gestione airport da terminale On 15 Mag, 23:56, Massimo <rana…@gmail.com> wrote: Ti posto un sito di interesse http://osxdaily.com/2007/01/18/airpo…eless-utility/ ciao « aggiungere capitoli | Gli utenti windows » […]

  31. Gregory says:

    In response to Jason’s comment:
    “Unfortunately, I can’t seem to figure out how to connect to SSIDs that are not broadcasted. Anyone have an idea?”

    Try this syntax instead:

    $ sudo airport -A –ssid=ESSID –password=PASSWORD

    it worked for me.

    For spoofing mac you could try (tested on OS X 10.5.6):

    $ airport -z #optionally disconnect from network to hide your mac change
    $ sudo ifconfig en1 ether AA:BB:CC:DD:EE:FF #this can only be done when the interface is up (or at least from my experience)
    $ sudo airport -A –ssid=ESSID –password=PASSWORD #reconnect to network.

    Now the airport GUI will tell you your original mac address still, but when you are connected if you check output from ifconfig:

    $ ifconfig en1 ether|grep ether
    ether AA:BB:CC:DD:EE:FF

    similarly, if you have admin access to the router you can check the connected devices there and see your mac should have changed.

  32. the obvious says:

    I have an idea..
    I have an idea.. You can use an OS that doesn’t require you to and open command line utilities and terminals
    and write SCRIPTS just to accomplish the simpleist everyday tasks!!

    DOH

  33. @DOH says:

    “I have an idea..
    I have an idea.. You can use an OS that doesn’t require you to and open command line utilities and terminals
    and write SCRIPTS just to accomplish the simpleist everyday tasks!!”

    You are implying OSX requires one to use terminal to perform some of the operations listed here.

    Well OSX doesn’t require this d-bag.

  34. Mark says:

    Does anyone know if there is a command switch to tell the NIC to run 20/40mhz? Network Utility displays 130 and that means the NIC is not set to 20/40. I wish there were a configuration utility to set these parameters like in Windoz. When running Bootcamp, I have no problem with wireless N settings and attain 270+ speeds. It is only a problem in OSX, which is, of course, why I have my wonderful MacBook Pro. I love my Mac, but I want more speed, and need my DIR-655 functionality.

  35. 한스의 생각…

    airport – the Little Known Command Line Wireless Utility 에어포트 상태를 커맨드라인으로 확인해야 할 때……

  36. Flüge Bangkok says:

    Thank you very much for the useful tips
    You have really saved my time .
    Since I have bought my new macbook, I have had a lot of difficulties to configure my wireless network settings.
    My laptop was automatically joining my neighbour’s network rather than the network I’d ever want it to join.
    That was bothering for me and I intended to bring it bag to the shop, but the laptop has a very nice design, That’s why I haven’t done it.

  37. […] is not readily accessible. We make it that way with the following command in Terminal (found here): sudo ln -s […]

  38. jim says:

    I can’t make this work on PPC computers running 10.4.11 only on intel 10.4.11 – here is the command I have been using
    airport -A –associate= –password=

    This is important to me because my network manager is changing our wireless security on 15 campuses and I need to make all the wireless macs change over…about 1000 G4 iBooks. Any ideas as to why the intel and ppc 10.4 computers act differently with the same command?

  39. jim says:

    Sorry for the 2nd post— more info – I CAN change and add associations to wireless networks on ppc and intel platform as long as they are not encrypted. Our change is going from unencrypted closed network to a wpa2 closed network. If I can make this work I can send remote commands with the security software we use on the Macs.

  40. […] the Airport, called “airport”. Only its buried pretty deep in the system. Visit this article to find out more. I’ll show you how to add this to your PATH to make sure its always available. We can use […]

  41. zaphod says:

    you can hold down the option key when clicking on the airport menu to get some of the more useful troubleshooting info.

  42. mystergag says:

    Nice CLI command….thanks.
    But we are protected by WPA2-Enterprise (so Radius in the back) So we have DOT1.x user and pass configure in the GUI for our WIFI connection.

    Is there a way to pass those informations by giving specifics arguments to the command airport.

  43. Chris says:

    Is there any way to turn up the roaming aggressiveness of the airport card? We have many APs here, but the airport card doesn’t always connect to the closest one, especially after moving around the office…

  44. Sweatermeat says:

    Another good command line:

    Did you ever fart so hard you ended up in another zip code?

  45. sony battery says:

    This tip has ended hours of pulling my hair out. I’d been having trouble with my Mac mini computer automatically joining random wireless networks rather than the *one* network I’d ever want it to join … and this is despite using Network Preferences to configure Airport to join only preferred networks by default; to ask before joining an open network; and to require an admin password to change wireless networks.

  46. […] airport – the Little Known Command Line Wireless Utility […]

  47. ww says:

    I’m having the same problem as Ryan (above), i can’t seem to get it to connect to one of multiple same-SSIDed routers using the BSSID. Anyone figure this out?

  48. […] rate 2MB, en windows hay que modificar el valor en las propiedades del adaptador y en os x? airport – the Little Known Command Line Wireless Utility – OS X Daily Juegue 8) […]

  49. Jonathan says:

    Just in case nobody know, but, most of the info you can get with this little command line util is available by simply holding down the ALT key on your keyboard before you click on the little wifi symbol in the top screen bar (on the right).

    By pressing ALT, it will revel a lot more information that the signal level, pretty much the same thing you get with #airport -I.

    There are lots of stuff like that hidden away in OSX. The principle as I see it is that most people don’t need to know that, so they hide it, but for power user, it’s usually as easy as holding down a key (usually ALT) before clicking on a lot of things to revel more advanced option.

    I guess, it would be nice to have an advanced options on/off switch somewhere in the system preferences for people who want to see all the available options.

    There you go!

  50. john says:

    Does anybody know how to connect to a specific ssid with the airport command ? It seems that in snow leopard the parameter “-A –associate” is no longer available…what else can be used to connect to a certain ssid by command line?? thks

  51. Jan van Haarst says:

    Since Snow Leopard you need to use the networksetup command to connect to a wireless network from the command line.
    Like this :
    sudo networksetup -setairportnetwork en1 SSID PASSWORD

    • Brian says:

      THANK YOU!!!

      I’ve been pulling my hair out trying to figure out why ‘sudo airport -associate’ or any of the other similar commands haven’t been working for me, and haven’t been able to find Snow Leopard stuff anywhere else.

    • Mike says:

      I’m using lion and couldn’t get this or the -A to work, any ideas?

  52. […] else is really valuable. Here’s a way you can do this through the command line using the airport wireless tool we’ve discussed in the […]

  53. […] Kriesel benutzt. Um an die W-Lan Daten zu kommen habe ich (da ich ein Macbook benutze) den Befehl „airport -s“ mit dem ProcessBuilder verwendet weil Java diese Funktion leider nicht zur Verfügung stellt. […]

  54. Dilli R. Maharjan says:

    Great Tips,
    Thanks man

  55. Mactard Shortbus says:

    Once again, Mac’s needlessly restrictive and retarded ‘Think Different’ meets up with BSD’s obsessive ‘stability’ and buries the command to print wireless info behind, what, seven directories? Why is ifconfig in $PATH but ‘airport’ (seriously? seriously? does the wireless make the computer fly? WTF?) is not? Why is ssh in $PATH but airport isn’t? Why is it that people smart enough to design with global menus, autohiding docks, multi-touchpads and the best laptop shell (the case, not the UI) ever don’t realize that wireless access is almost a necessity for enterprise and personal computer use in this day and age and that, silly me, I thought that it would be ‘faster’ to use a terminal than GUI to learn my wife’s work machine’s MAC address so we could fix the damn network.

    Of course, I realize the answer to my question is “because designers make terrible engineers and engineers make even worse designers” but I, like, thought they ‘Think Different’ out in Cupertino.

  56. […] command) that would let me see which AP I had associated with. After some digging around I found this webpage that told me that there is indeed a command (very well hidden) right there in the OS. For some […]

  57. […] osxdaily hat auch noch diese Zeile hier zum Besten gegeben, um einen einfacheren Aufruf zu gewährleisten: sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport Danach kennt das Terminal ein airport-Kommando =) […]

  58. WifiAdminGuy says:

    This is freakin’ awesome. Thanks for finding and posting this. I wish I had known about this sooner.

  59. […] OS X comes with a nifty little known command line wireless utility. To enable easy access to it, run the following to put it in the command line’s search path: […]

  60. nono says:

    Note that at least on 10.6, many airport infos are available when clicking on regular menubar airport icon with “Alt” key pressed.
    One of the many eastern egg embedded by Apple through ages!

  61. JohnAnthony says:

    Awesome tipp :)

  62. ed says:

    does anyone know a way to lock my wifi card of my macbook air to use (a) only ?

    on my PC I can change the driver settings of my wifi card to use 5.2ghz only and i would love to be able to the same on my mac.

    I want to do this because at my work there are multiple repeaters.

  63. […] long hidden airport command line utility buried deep in Mac OS X can be used to scan for and find available wireless […]

  64. Mac OS X says:

    […] Networking is pretty straightforward, and has its own command line utility, airport. […]

  65. Alan says:

    Does anyone know a command to remove a client wireless from my network? For example an iPhone from somebody that use my network wireless. Thanks for help

Leave a Reply

 

Shop for Apple & Mac Deals on Amazon.com

Subscribe to OSXDaily

Subscribe to RSS Subscribe to Twitter Feed Follow on Facebook Subscribe to eMail Updates