To communicate with crow we’ll use
druid, a command-line tool that lets you send and receive text, as well as run and upload scripts.
First we’ll collect and install a few tools, starting with
Python which is the environment that runs
druid. Don’t worry, you don’t ever have to type any Python code into
druid requires Python 3.6+, but let’s get the most recent version (3.11 as of this writing, March 2023):
- macOS: download from the Python website
- Windows: search
Python 3.11in the Microsoft Store (it’s free)
- the Microsoft Store is the most straightforward way to install Python on Windows, but if you choose to install from the Python website directly then please follow these instructions
- Linux: in a terminal run
sudo apt-get install python3 python3-pipor equivalent
Now load up a terminal so we can check Python is installed and get the next pieces:
- macOS: Open
- Windows: Use
PowerShelland open by right-clicking and
Run as administrator
- Linux: Your choice!
gnome-terminalis likely your default
Check if Python is installed and working:
Which should print
Python 3.11 or something similar. If this doesn’t work for you, try removing the
3 and just run
Now it’s time to install
In a terminal, execute:
pip3 install monome-druid
NB: If you see an error like “ERROR: Could not install packages due to an EnvironmentError…”, try running the command with
sudo to gain the required privileges:
# you'll be asked to enter your password after typing this: sudo pip3 install monome-druid
Close and reopen your terminal, then run
druid to start scripting.
To update when there’s a new release, use
pip3 install --upgrade monome-druid
NB: If you see an error like “The script druid is installed in ‘/Users/your/Library/Python/3.8/bin’ which is not on PATH…”, you can open up
~/.zshrc and add this line:
export PATH="$PATH:/$HOME/Library/Python/3.8/bin". Note macOS switched from bash to zsh with 10.15 (Catalina.) If you on on a previous version of macOS, you will probably have to add this line to your
In PowerShell, execute:
python -m pip install pyserial asyncio prompt_toolkit
python -m pip install --upgrade setuptools
python -m pip install monome-druid
To update when there’s a new release, use
python -m pip install --upgrade monome-druid
After the installation is complete, you may see a message like this one:
WARNING: The script druid.exe is installed in ‘C:\Users\USERNAME\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\Scripts’ which is not on PATH.
If you do, copy the entire path listed (the stuff between the
's), open your Start menu, search “path” and select “Edit the system environment variables”.
On the dialogue that appears, click the Environment Variables button. In the “User variables for USERNAME” dialogue box, select Path and click Edit. On the next dialogue, click the New button, and paste in the path you copied earlier.
Click OK until all the dialogue boxes are gone.
On Windows 7, druid may be unable to connect with crow. Try using Zadig (instructions here) to install the “USB Serial (CDC)” driver instead of the “WinUSB” driver.
With crow connected to your device with USB and your modular case turned on, execute:
You should see druid open with the following message up top:
//// druid. q to quit. h for help <crow connected>
If you see
<crow disconnected> instead, make sure your modular case with crow is turned on, and the USB cable is connected. If everything is connected but still not connecting, close your Terminal application and restart it.
druid responds with
can't open serial port you probably don’t have the required permissions to open the device. See below.
can't open serial port you probably don’t have the required permissions to open the device. To remedy this add yourself to the correct group, which can be determined by running (on Linux):
ls -l /dev/ttyACM0 crw-rw---- 1 root dialout 166, 0 Oct 9 20:28 /dev/ttyACM0 # ^ the group
In this case the group is called
dialout but it’s sometimes also called
To add yourself to the
dialout group run
sudo gpasswd -a <your username> <the group name found above>
After this logout and login again or simply restart.
It’s possible to send lines of text to druid (which are forwarded to crow) using websockets. Druid listens on port
This allows you to execute crow commands from outside of druid, for example within your text editor.
Though other scriptable editors should be able to send data to a websocket, we’ll explore
vim as an example.
vim here’s how to bind the keystroke
CTRL-\ which executes the current line:
map <C-\> :silent .w !websocat ws://localhost:6666 -1<CR>
And here’s how to bind the keystroke
F5 to execute all highlighted lines as one block, enabling e.g. function definitions:
vmap <F5> :w<Home>silent <End> !sed -e '1i\```' -e '$a\```' <bar> websocat ws://localhost:6666<CR>
Copy either or both of the lines above to your
.vimrc to make it permanent. This command requires websocat.