Menlo

Enable the Battery BMS Switch

Turn on the BMS hardware switch.

Batch 1 customers only

This step is only for early customers who received a Batch 1 robot, we will let you know through email if you are a batch 1 customer. If you still are not sure, contact us first through our support channel. All other batches can skip this step and continue to Assign Actuator IDs.

Before You Begin

  • Complete Connect and Sign In. The Head Compute Unit and RPU must be connected by the 1000 mm Ethernet cable and powered on.
  • Keep your laptop on the same Wi-Fi network as the robot, or on the robot's setup hotspot.
  • Have the hostname, username and password you set in Raspberry Pi Imager ready, with SSH enabled. Without them you cannot log in to the ; contact us through our support channel.

Open a Terminal

A terminal (also called a TTY session) is a window where you type commands and press Enter to run them. This step uses two terminal windows at the same time: Terminal 1 watches the battery's messages, and Terminal 2 sends commands.

Open the Start menu, type Terminal (or PowerShell on older Windows 10), and open it. Windows 10 and 11 already include the ssh command.

To open a second terminal, press Ctrl+Shift+T for a new tab, or open Terminal again from the Start menu. Paste with Ctrl+V or a right-click.

Press Cmd+Space, type Terminal, and press Enter.

To open a second terminal, press Cmd+T for a new tab or Cmd+N for a new window. Paste with Cmd+V.

Press Ctrl+Alt+T, or open Terminal from your applications menu.

To open a second terminal, press Ctrl+Shift+T for a new tab or Ctrl+Shift+N for a new window. Paste with Ctrl+Shift+V.

Placing the two windows side by side makes it easier to watch Terminal 1 while you type in Terminal 2.

Connect to the RPU

Your laptop cannot reach the RPU directly. You first log in to the over SSH (a secure remote login), then log in to the RPU from the . Do this in each terminal.

Log In to the Pi 5

Replace <your-pi-username> and <name> with the username and hostname you set in Raspberry Pi Imager; for example, ssh [email protected]:

ssh <your-pi-username>@<name>.local
  • The first time you connect, you are asked Are you sure you want to continue connecting (yes/no/[fingerprint])?. Type yes and press Enter.
  • Enter your password when asked. Nothing appears on screen while you type the password; this is normal. Press Enter when done.
  • If <name>.local is not found and your laptop is on the robot's setup hotspot, use ssh <your-pi-username>@10.42.0.1 instead.

When you are logged in, the line where you type starts with <your-pi-username>@<name>.

Log In to the RPU

From the , run:

Type yes if asked to continue connecting, then enter the RPU password, asimov. When you are logged in, the line where you type starts with asimov@.

When a command below starts with sudo, you may be asked for a password again. Enter the RPU password, asimov.

Steps

Open Terminal 1

Open a TTY session on the RPU (Terminal 1), as described in Connect to the RPU. This session will be used for observing data on the CAN bus.

Start Watching the CAN Bus

In Terminal 1, run:

sudo candump can_bms

This keeps running and prints each message on the CAN bus, so you can no longer type commands in this terminal. Leave it open.

Open Terminal 2

Open another TTY session on the RPU (Terminal 2), the same way. This session will be used for sending commands to the CAN bus.

Read the BMS Register

In Terminal 2, run the following command, then look in Terminal 1 and note down the data received from the BMS (the eight bytes after [8]):

sudo cansend can_bms 137#5A

Increment Byte 3

The register bytes are hexadecimal (base 16: digits 0–9, then A–F). Increment byte 3 (zero-indexed) of the BMS register by 1 in hexadecimal, leaving the other seven bytes unchanged. For example, 00 02 00 06 00 07 00 0D becomes 00 02 00 07 00 07 00 0D:

BMS register (8 bytes)

Byte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7
Read000200060007000D
Updated000200070007000D
Only byte 3 changes (06 + 1 = 07). All other bytes stay the same.

Count in hexadecimal, not decimal: 09 becomes 0A (not 10), and 0F becomes 10.

If byte 3 reads FF

FF is the largest value a byte can hold, so it cannot be incremented. Do not continue, and do not enter factory mode. Contact us through our support channel.

Save this incremented value; you will need it to update the BMS register after entering factory mode.

Enter Factory Mode

In Terminal 2, run the following command to enter factory mode:

sudo cansend can_bms 12E#5678

Write the Updated Register

In Terminal 2, run the following command with your incremented register bytes, written without spaces:

The RPU will turn off

If this command executes successfully, the RPU will turn off. Both terminals then stop responding or show a message such as Connection to 10.0.0.2 closed; this is expected.

sudo cansend can_bms 137#<register-bytes-after-increment>

For example:

sudo cansend can_bms 137#000200070007000D

Turn the Battery Back On

Turn the battery back on using the switch, and wait for the RPU to boot. This takes about two minutes.

Reconnect Both Terminals

Relaunch the previous TTY sessions for reading and writing to the CAN bus. In both terminals, repeat Connect to the RPU. If a terminal is still logged in to the , you only need to repeat the RPU login. Then run sudo candump can_bms in Terminal 1 again.

Exit Factory Mode

In Terminal 2, run the following command to exit factory mode:

sudo cansend can_bms 12F#2828

Close the Terminals

Press Ctrl+C in Terminal 1 to stop candump. Type exit and press Enter to log out; type it twice to leave both the RPU and the , then close the terminals.

Example candump Output

Read data

can_bms  137   [1]  5A
can_bms  137   [8]  00 02 00 06 00 07 00 0D

Enter factory mode

can_bms  12E   [2]  56 78
can_bms  12E   [1]  5A

Increment byte 3 by 1 (zero-indexed; note 06 becoming 07)

can_bms  137   [8]  00 02 00 07 00 07 00 0D
can_bms  137   [1]  5A

Exit factory mode

can_bms  12F   [2]  28 28
can_bms  12F   [1]  5A

How is this guide?

On this page