Posts

Get wifi details from macOS command line

GUI is great but CLI is awesome. Here are a few macOS CLI commands go get wifi details:

Get details about your current connection/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I

Sample output:

     agrCtlRSSI: -61
     agrExtRSSI: 0
    agrCtlNoise: -90
    agrExtNoise: 0
          state: running
        op mode: station
     lastTxRate: 162
        maxRate: 300
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: 9c:3d:cf:d0:e2:34
           SSID: Maison_5GHz
            MCS: 12
        channel: 36,1

Get the list of an SSID broadcast scan (aka list of available visible SSID)
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s

Sample output:

                            SSID BSSID             RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
                         VLAN805 54:3d:37:d1:b5:c8 -42  11      Y  US NONE
                         VLAN205 54:3d:37:91:b5:c8 -43  11      Y  US NONE
   …

Sync with remote as you code

If your like me, sometimes you can not test the code your writing on your workstation and the code need to be 'installed' or 'deployed' to a remote server in order to test it because of hardware constrain or physical environment (IO, network,...).

The following is a simple shell script that will monitor a local path and rsync it to a remote server when a file is changed. It can also remote execute some commands (like restarting services for example).

#!/bin/sh

if [ -z ${1} ] || [ -z ${2} ] || [ -z ${3} ] || [ -z ${4} ]; then
cat <<EOF
Usage:
  remote_sync local_path remote_user remote_server remote_path [remote_script]

local_path:    Local path from where the files will be copied from (required)
remote_user:   Remote user to use for rsync  (required)
remote_server: Remote server (IP of FQDN)  (required)
remote_path:   Remote path where the files will be copied to  (required)
remote_script: Remote script to execute after syncing the files (optional)
              Script mus…

Arduino: Upload timeout and !!! in a string

If you ever see the following when uploading your sketch to an Arduino board (using the Arduino IDE, PlatformIO or any other):

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

Look for !!! (3 exclamation points characters  aka bang) in your code and remove them.

Why ? These 3 exclamation point characters are actually used to tell the Arduino bootloader to…