Separate firmware, configuration and PC software
Firmware runs on the controller. Configuration defines assignments or parameters. A PC application may receive data, convert it and pass it to the simulator. These components cooperate but are not interchangeable files. Installing new firmware does not automatically replace its PC counterpart.
One panel may send serial inputs through a PC bridge; another may enumerate as a USB input device with suitable hardware and firmware. Write down your intended path before mixing instructions. The existing Uno panel example needs an additional PC bridge. A combined physical panel and Falcon BMS test is still outstanding.
Record the complete starting point
| Item | Record | Purpose |
|---|---|---|
| Board | Model, revision, controller and variant | Correct target and electrical limits |
| Firmware | Project, version or commit, settings | Repeatable behaviour |
| Tools | IDE, board package and library versions | Reproducible compilation |
| PC side | Application, bridge and profile | Matching communication partner |
| Connection | Device identity, observed port and cable | Find the intended device |
| Recovery | Saved previous version and procedure | Reverse a particular change |
“Arduino compatible” is not a complete board identity. Similar boards can contain different controllers, USB interfaces or voltage variants. Use manufacturer information and the actual detected device. A COM number is the system’s current assignment, not a permanent identity for your panel.
Choose a traceable source that matches the hardware
Use the project’s official release or an explicitly identified source revision. Read which boards and versions the instructions cover, and whether the package contains source code or a ready-made firmware image. A binary needs an explicitly matching target and upload method.
Keep the download location and version with the project. A name such as “final-new” will not distinguish releases later. Different libraries may have similar names but incompatible interfaces. Use the required library and version instead of trying unrelated packages with matching names.
Prepare recovery before uploading
Save existing source, settings, mappings and required versions. Keeping the new download is not a backup of the old state. Check what the update overwrites or preserves. If previous settings cannot be recovered after an update, retain their values or the product’s supported export.
Do not assume complete rollback is possible without the previous binary or source. Reading a controller may be unsupported or insufficient to recover the project and configuration. Establish the documented recovery method first when that information is missing. A working device is a poor place to experiment with an unidentified image.
Compile, transfer and run are separate checks
- Name the saved starting point and intended target. Select the required board package and documented libraries.
- Verify or compile first. Resolve source, dependency and target errors here; these are not yet USB failures.
- Identify the actual device and its port. Use a data cable and close applications occupying that particular interface.
- Use the upload method documented for this board. Record the result and the first meaningful error if it fails.
- After upload succeeds, check the expected local behaviour. Then add the PC application, followed by the simulator.
Uploading replaces program code on the target. Outputs in a wired panel may change during restart or initialisation. Prepare the assembly according to its documentation and change wiring only with power disconnected.
Define a small test with an unambiguous result
Consider a conceptual test panel with two buttons. Press and release A ten times, then do the same for B. For an event-based input path, expect ten presses and ten releases per button with no extra events from the other channel. For a state-based protocol, compare observed state transitions instead: the counting rule must fit the actual mechanism.
Repeat after a restart. Once the local result is correct, check PC assignments and the real response in the simulator. This example defines acceptance criteria, not a Cockpit Suite message syntax or a universal debounce time. For LEDs or displays, add a fixed output pattern with known starting and finishing states.
Match the error to the stage that failed
Compilation errors initially concern code, target or dependencies. “No port” points to recognition or selection. “Port busy” requires identifying the application using that interface. A transfer timeout is a different finding from a successful upload followed by incorrect behaviour. Record the last stage you have actually confirmed.
A bootloader reset only makes sense on boards supporting that procedure. Double-pressing reset is not a universal remedy. Avoid speculative driver packages and arbitrary system changes. When uploading succeeds but the function fails, start with configuration, communication partner and the local test.
Check the Cockpit Suite connection explicitly
A detected serial port is not automatic device integration. Both ends need the intended settings and a supported communication method. A successful demo from another project does not establish Cockpit Suite compatibility. Shared software should make everyday use easier; clear device selection and saved settings help within confirmed capabilities.
Firmware changes can affect mappings, identifiers and start-up behaviour. Recheck existing profiles without indiscriminately overwriting them. Keep simulator control, telemetry and physical outputs separate. A working button command proves neither returned data nor a functioning indicator lamp.
For UART, check the documented baud rate, data bits, parity and stop bits at both ends. USB serial uses the settings and semantics of the particular project; one baud number does not describe every native USB data path. Message format, termination or length definition, and the receiving parser must agree. Expect an identification reply only if the protocol defines one. Distinguish “no complete message within the expected time” from “message received with unexpected content” before investigating mappings and values.
Finish with a repeatable result
Your version is traceable when sources, versions and settings are recorded, uploading is confirmed and the intended behaviour has been checked after restarting. Distinguish “compiled”, “uploaded”, “checked locally” and “checked in the simulator” in your notes. That prevents a partial success from becoming an unsupported claim of complete operation.
For forum help, provide the board identity, versions, relevant complete error and smallest repeatable sequence. Remove personal paths or credentials before sharing. We aim to help on the same day where possible; late questions may take longer. A documented fault and solution also help others, allowing this young project to develop through European and international community experience.
Sources and further documentation
Manufacturer and project documentation supports the technical principles. Community discussions illustrate individual questions, not their prevalence. Examples and checks are our own planning guidance; they have not been tested on your hardware. Sources accessed on 18 October 2026.
- Bootloader uploaded but USB is not workingAn example of bootloader programming being mistaken for proof that normal USB uploading works.
- If your sketch doesn’t uploadOfficial guidance separates compilation, connection and upload failures.
- Failed uploading: no upload port providedExplains why selecting a board target and selecting a port are different tasks.
- Arduino Serial.begin() referenceOfficial Arduino reference for baud rate, data bits, parity and stop bits.