Skip to content

FAQ and Troubleshooting

Espen Hovland edited this page Jun 5, 2026 · 2 revisions

FAQ & Troubleshooting

Installation & setup

Which package should I install?

pip install silabs-pycommander. That meta-package gives you the pycommander command and the CLI flavor of Simplicity Commander. Add the GUI with pip install silabs-pycommander[gui]. The -core, -cli and -gui packages are building blocks — see Installation.

Do I need to install Simplicity Commander separately?

No. The PyCommander wheels bundle a platform-appropriate Commander executable and extract it to a per-user cache on first use. See Architecture-and-Packages.

Do I need anything else on my system?

Yes — the SEGGER J-Link drivers. Simplicity Commander uses them to talk to the adapter. Commands that touch hardware will fail without them.

Does installing PyCommander conflict with an existing Simplicity Commander?

No, it coexists. But note that all Commander instances on a machine share the same commander.ini configuration file, so a setting like command logging applies to all of them.

Which Python versions and platforms are supported?

Python 3.10+, on macOS (arm64), Windows (x86), and Linux (x86_64 / aarch64 / aarch32).

CLI vs. GUI vs. API

pycommander, pycommander-cli, pycommander-gui — what's the difference?

All three forward to Simplicity Commander. pycommander uses the GUI flavor if it's installed, otherwise the CLI flavor. pycommander-cli/pycommander-gui force a specific flavor. pycommander-gui (no args) launches the graphical app. See Command-Line-Interface.

How do I force a specific flavor in Python?

Import from the flavor package directly: from pycommander_cli import Commander or from pycommander_gui import Commander. The classes are otherwise identical. from pycommander import Commander prefers GUI when present.

Using the API

A method returned None. Was there an error?

Not necessarily. For Adapter-Class/Target-Class look-ups, None means Commander ran but reported no usable result. Actions return True/False. Genuine command failures raise exceptions — see Error-Handling.

How do I select which adapter to use?

Pass exactly one of serial_number, ip_address, or serial_port to the constructor. Passing more than one raises ValueError. You can also override per-call via **kwargs. See Python-API-Overview.

The command I need isn't in the typed API.

Two options: use commander.runCommand("<cmd>", "<args>", json_formatted_output=False) for an ad-hoc call (see Commander-Class), or check whether it's an interactive-only suite (vuart, rtt, swo) that is intentionally excluded.

aem dump complains that it needs outfile/duration.

The Commander-level aem.dump is stricter than the interactive CLI and requires both. For open-ended capture, use the AemStream class instead.

My adapter-level call doesn't work on my probe.

Adapter, aem and vcom features (info, voltage, VCOM, energy) require a Silicon Labs adapter. They are not available on generic J-Link adapters. Target/device/flash work with any supported debug adapter.

A long-running command raised TimeoutError.

Synchronous commands time out after 300 seconds (CommanderBase.default_timeout_s). TimeoutError is distinct from PyCommanderError; catch it separately. See Error-Handling.

Diagnostics

How do I see exactly what commands ran?

Enable logging by passing log_file_path=Path("pycommander.log") to the Commander constructor. Every invocation, timeout and failure is appended with a timestamp.

How do I check versions?

pycommander --version from the shell, or Commander().getVersion() in Python (returns a CommanderVersionInfo with Simplicity Commander, J-Link, EMDLL, mbed TLS and Qt versions).

How do I scan for connected adapters?

Commander().listAvailableAdapters(list_usb_adapters=True) (or list_network_adapters=True). It performs an unintrusive scan and returns BasicAdapterInfo objects.

I want to test against a specific Commander build.

Pass Commander(executable_path=Path(".../commander-cli")) to bypass the bundled executable.

See also

Clone this wiki locally