Skip to content
binho.io (opens in a new tab)Contact Us

Binho Atira: Setup

This page goes from the box to a halted Cortex-M target. For the full pinout, specifications and more examples, see the Binho Atira overview and its hardware reference.

Plug the Atira into the computer with a USB-C cable. Leave the target unconnected for now.

The probe needs Atira firmware 1.0 or newer. Step 4 shows how to read the version.

PyCosmicSDK 1.7.0 is the first version with Atira support. It needs Python 3.10 or newer.

pip install "pycosmicsdk>=1.7.0"

On Linux, a udev rule gives the current user access to the probe (USB ID 1fc9:8347). Without it, DebugProbe.open() fails with DeviceNotFoundError and names the permission problem. Windows and macOS need nothing.

Create /etc/udev/rules.d/65-binho-atira.rules:

sudo nano /etc/udev/rules.d/65-binho-atira.rules

with these lines:

# Binho Atira (HID control)
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="8347", MODE="0660", GROUP="plugdev", TAG+="uaccess"
# Binho Atira (USB: CMSIS-DAP and SPI bulk)
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="8347", MODE="0660", GROUP="plugdev", TAG+="uaccess"
# Binho Atira bootloader
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fe", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fe", MODE="0660", GROUP="plugdev", TAG+="uaccess"
# Binho Atira UART bridge
SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="8347", TAG+="uaccess"

Reload the rules, then unplug and replug the probe:

sudo udevadm control --reload-rules && sudo udevadm trigger
from pycosmicsdk import DebugProbe, list_debug_probes
print(list_debug_probes())
with DebugProbe.open() as probe:
info = probe.info
print(f"Serial: {probe.serial_number}")
print(f"Firmware: {info.fw_major}.{info.fw_minor}.{info.fw_patch}")
print(f"UART bridge: {probe.uart().bridge_port or '(not found)'}")
ObservedMeaning
An empty listThe probe is not on USB. Try another cable or port.
DeviceNotFoundErrorAnother program holds the probe, or (Linux) the udev rule is missing.
UnsupportedFirmwareErrorThe probe runs firmware older than 1.0. Update it, then retry.

Connect the target’s 10-pin Cortex debug header to the Atira’s J4 with a straight (not mirrored) 1.27 mm ribbon: the red stripe goes to pin 1 at both ends.

J4 pinSignal
1VDD (target rail, 3.3 V)
2SWDIO
3, 5GND
4SWCLK
10nRESET

Choose how the target is powered:

Powered by the Atira

Leave the target’s own supply (USB, bench supply) disconnected. The Atira powers it through J4 pin 1.

Self-powered target

Self-powered targets are not supported in 9.0. Power the target from Atira. A self-powered board works only if it is a 3.3 V board with J4 pin 1 unwired. Power it before turning Atira supply on, and turn Atira supply off before unplugging or swapping it. The rail must still be switched on in step 6: the probe’s level shifters need it.

The rail is off when the probe powers up. Switch it on and check the reading:

import time
from pycosmicsdk import DebugProbe
with DebugProbe.open() as probe:
power = probe.power()
power.set_output(True)
time.sleep(0.5) # the reading lags the switch by ~0.5 s
r = power.reading()
print(f"{r.voltage_mv} mV, {r.current_ua / 1000:.2f} mA")

Expect about 3300 mV. The current is what the target draws; a NUCLEO-H503RB powered this way draws about 20 mA. If the current is far above what the board should draw, switch the rail off (power.set_output(False)) and check the wiring.

import time
from pycosmicsdk import DebugProbe
with DebugProbe.open() as probe:
probe.power().set_output(True)
time.sleep(0.5)
debug = probe.debug()
debug.attach()
state = debug.halt()
print(f"halted at PC 0x{state.pc:08X}")
print(f"SP = 0x{debug.read_register(13):08X}")
debug.run()
debug.detach()

A PC address inside the target’s flash (for example 0x08xxxxxx on STM32) means SWD works.

If attach() fails:

  • Check that the rail is on and reads about 3.3 V. With the rail off, SWD cannot connect.
  • Check the cable is straight, not mirrored.
  • If the target board has its own on-board debugger (ST-LINK, MCU-Link), hold it in reset or unpower it so it does not drive SWDIO/SWCLK. On a NUCLEO-H503RB, fit JP1.