Turn Bluetooth On and Off from Command Line on macOS

By  on  
bluetooth

Bluetooth has been a revelation in wireless technology: wireless mice, headphones, streaming devices, and a variety of home and office environments.  It goes without saying that wireless peripherals are so much easier to manage than wired counterparts, especially mice, that I usually have my MacBook's bluetooth turned on.

There are times, however, that I move my laptop away from the mouse (OK, I admit:  the kitchen) where the bluetooth connection is still in range but with the mouse still connected, I can't use my laptop's touchpad, leaving me to only use my keyboard which is an annoyance.  That led me to finding blueutil, a command line utility for macOS that lets me turn Bluetooth on and off with one command!

Start by installing blueutil with HomeBrew:

brew install blueutil

The -p flag is a switch for turning bluetooth on and off:

# Turn bluetooth off
blueutil -p 0

# Turn bluetooth on
blueutil -p 1

This utility will be so helpful as I move around my house.  Since I can't use my touchpad during these situations, I can't turn Bluetooth off from the command bar, so a simple command like this is exactly what I need!

Recent Features

  • By
    Interview with a Pornhub Web Developer

    Regardless of your stance on pornography, it would be impossible to deny the massive impact the adult website industry has had on pushing the web forward. From pushing the browser's video limits to pushing ads through WebSocket so ad blockers don't detect them, you have...

  • By
    9 Mind-Blowing Canvas Demos

    The <canvas> element has been a revelation for the visual experts among our ranks.  Canvas provides the means for incredible and efficient animations with the added bonus of no Flash; these developers can flash their awesome JavaScript skills instead.  Here are nine unbelievable canvas demos that...

Incredible Demos

  • By
    9 Incredible CodePen Demos

    CodePen is a treasure trove of incredible demos harnessing the power of client side languages.   The client side is always limited by what browsers provide us but the creativity and cleverness of developers always pushes the boundaries of what we think the front end can do.  Thanks to CSS...

  • By
    HTML5&#8217;s placeholder Attribute

    HTML5 has introduced many features to the browser;  some HTML-based, some in the form of JavaScript APIs, but all of them useful.  One of my favorites if the introduction of the placeholder attribute to INPUT elements.  The placeholder attribute shows text in a field until the...

Discussion

  1. Patrick K

    Thanks for sharing this! I was trying to find an easier way to toggle Bluetooth and I kept finding articles about AppleScript, but this is way easier for people familiar with the command line.

  2. Ahmed Hossein

    Thank you! I just came across this and it was a life-saver.

    I created a small “bluetoggle.sh” to toggle the switch: ON if it was OFF, OFF if it was ON. I then used iCanHazShortcut to map the script to [^B] for ease of access.

    #!/bin/zsh
    
    if [ blueutil -p |grep 1 = "1" 2>/dev/null 2>/dev/null ]; then blueutil -p 0; else blueutil -p 1; fi
    
  3. Ahmed Hossein

    The code above was messed up by the interpreter (symbol ` is not accepted it seems). I put here the final code of my 1-line bluetoggle.sh

    https://pastebin.com/YssdgD5Z

  4. Ahmed Hossein

    This can be turned into a toggle command using:

    #!/bin/bash
    blueutil -p | grep 1 && blueutil -p 0 || blueutil -p 1
    
  5. Sean Beeg

    Thanks for this. Bluetooth has been crashing on my mac every so often, so a quick brew install and 2 aliases and I’m in business.

  6. Matt D

    Here is how I control my bluetooth from ZSH.

    bt () {
    	if [ -n $1 ]
    	then
    		echo $1
    		export btArg=$(echo $1 | tr '[:upper:]' '[:lower:]') 
    		echo $btArg
    		case $btArg in
    			(on) echo "Turning on BlueTooth" >> /tmp/bt.log
    				blueutil --power 1 | tee /tmp/bt.log ;;
    			(off) echo "Turning off BlueTooth" >> /tmp/bt.log
    				blueutil --power 0 | tee /tmp/bt.log ;;
    			(stat*) echo "Checking BlueTooth state" >> /tmp/bt.log
    				export BT=$(blueutil -p | tee /tmp/bt.log) 
    				case $BT in
    					(0) echo "BlueTooth is powered off"
    						blueutil --connected ;;
    					(1) echo "BlueTooth is powered on"
    						blueutil --connected ;;
    					(*) echo "BlueTooth in unknown state"
    						blueutil --connected ;;
    				esac ;;
    			(*) echo -n "Unknown input" ;;
    		esac
    	else
    		echo -n "Need input"
    	fi
    }
    

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!