{"id":47580872,"url":"https://github.com/serma-safety-security/Flipper-Zero-CAN-FD-HS-SW","last_synced_at":"2026-04-15T17:00:58.790Z","repository":{"id":261862360,"uuid":"885066004","full_name":"serma-safety-security/Flipper-Zero-CAN-FD-HS-SW","owner":"serma-safety-security","description":"This software implements an USB to CAN bridge compatible with Linux can-utils and slcan driver.  This software application is designed to run on flipper zero device and needs SERMA CAN FD board to be plugged in GPIOs ports.","archived":false,"fork":false,"pushed_at":"2025-02-20T09:51:36.000Z","size":23364,"stargazers_count":21,"open_issues_count":2,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-16T14:51:07.828Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/serma-safety-security.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-07T22:25:01.000Z","updated_at":"2026-02-15T00:46:10.000Z","dependencies_parsed_at":"2024-11-08T21:35:09.555Z","dependency_job_id":"8c91de08-1803-4793-9712-2e3a863ce2a8","html_url":"https://github.com/serma-safety-security/Flipper-Zero-CAN-FD-HS-SW","commit_stats":null,"previous_names":["serma-safety-security/flipper-zero-can-fd-hs-sw"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/serma-safety-security/Flipper-Zero-CAN-FD-HS-SW","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serma-safety-security%2FFlipper-Zero-CAN-FD-HS-SW","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serma-safety-security%2FFlipper-Zero-CAN-FD-HS-SW/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serma-safety-security%2FFlipper-Zero-CAN-FD-HS-SW/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serma-safety-security%2FFlipper-Zero-CAN-FD-HS-SW/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serma-safety-security","download_url":"https://codeload.github.com/serma-safety-security/Flipper-Zero-CAN-FD-HS-SW/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serma-safety-security%2FFlipper-Zero-CAN-FD-HS-SW/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31851057,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-31T19:00:24.235Z","updated_at":"2026-04-15T17:00:58.772Z","avatar_url":"https://github.com/serma-safety-security.png","language":"C++","funding_links":[],"categories":["GPIO"],"sub_categories":[],"readme":"# Flipper Zero CAN FD HS SW\n\n\nThis software implements an USB to CAN bridge compatible with **Linux [can-utils](https://github.com/linux-can/can-utils) and slcan driver.** \u003cbr\u003e\nThis software application is designed to run on flipper zero device and needs SERMA CAN FD board to be plugged in GPIOs ports.\u003cbr\u003e\n![Flipper zero CAN FD](./Documentation/images/main_logo.png \"Flipper zero CAN FD\")\n\n## Prerequisite\nYou need :\n- Windows machine to install the driver of the MPC2515 Board\n- Linux Machine to launch the USB-CAN Bridge. We recommand to install a VM Linux (Ubuntu or Kali linux for example) and use VirtualBox to make it easy\n\n\n## Usage\nWhen entering the application (by selecting can-fd-hs) from main menu or by selecting Apps/USB-CAN, a list appears with 3 choices which represent the 3 modes of the application detailled in next sections :\n- **USB-CAN Bridge :** This is the **main mode** which is used as a bridge between can-utils and a CAN device under test. \n- TEST USB LOOPBACK : This mode is used to test connectivity between host computer and flipper zero.\n- CAN TEST : This mode is used to test CAN connectivity. This send \"CANALIVE\" through CAN.\n\n### USB-CAN Bridge\nIn your Windows machine :\n1. Connect the MCP2515 Board\n2. Launch the software \"MCP2515 Bus Monitor\"\n3. Connect the MCP2515 : Device \u003e Connect\n4. Wait until debug is finish\n\nYour MCP2515 is ready to monitor data. Now you have to configure your Linux Machine.\n\nIn your VM Linux : \n1. Connect the Flipper Zero to your PC via USB cable. \n2. Connect the FLipper Zero to your VM : Périphérique \u003e USB \u003e Select the Flipper Zero [add image]\n3. Launch the command : dmesg  and verify that the FZ is connected to the VM\n5. Create a CAN network interface through USB Virtual com port (VCP) :`sudo slcand -s\u003cX\u003e \u003coptions\u003e ttyACM\u003cY\u003e can\u003cZ\u003e`. [add image]\n6. enable your created network interface `sudo ifconfig can\u003cX\u003e up`.\n7. Verify that the can0 is up `ip a | grep can\u003cX\u003e`.\n8. operate normally your can interface by using `cansend can\u003cX\u003e \u003ciii\u003e#\u003cdddddddd\u003e` and `candump can\u003cX\u003e` commands.\n\nPlease refer to [can-utils](https://github.com/linux-can/can-utils) for more details.\u003cbr\u003e\nIf issues are encountered, you can get more informations by connecting directly to vcp with tool like putty :\n- serial modeca\n- 8 data bits\n- no parity\n- no hardware control flow\n\nYou can see the following screenshot for more informations.\n**This mode can also be used to configure connection in flexible datarate (\"S9\" command).**\u003cbr\u003e\n\n**NB1 : beware of command line termination. It must be a carriage return '\\r'. For more convenience newline '\\n' characters located after carriage returns are ignored.** \u003cbr\u003e\n**NB2 : for compatibility reason (with can-utils)  newline character is not appended after CAN RX frames.As a consequence display of these frames is impacted.** \u003cbr\u003e\n**NB3 : beware of usb cdc buffer length. Max size is 64. So command number that can be sent in one frame is limited.** \u003cbr\u003e\n\n### TEST USB LOOPBACK\n\nThis mode is used to test VCP (USB cdc) connectivity. To use this mode, you have to :\n1. connect to the VCP with any VCP tool like putty :\n    - serial mode\n    - 8 data bits\n    - no parity\n    - no hardware control flow\n2. Once the connection is established message USB loopback is displayed, the user can test connection by sending characters on serial line and checking the content sent is sent back on serial line by the flipper device.\n\n![USB loopback](./Documentation/images/usb_loopback.png \"USB loopback\")\n\n### TEST CAN\n\nThis mode is used to test CAN connection (to verify wiring between CAN device under test and flipper zero board).\nNo user action is required before using this mode (except the obvious wiring step).\u003cbr\u003e\nThe frame sent shall by the device shall be the following :\n- 007E5TCA:43414E4C49564500 (IIIIIIII:DDDDDDDDDDDDDDDD with \\\u003cIII..\\\u003e the extended identifier \"TESTCA\" and \\\u003cDDD..\\\u003e the data \"CANLIVE\").\n\n![test can](./Documentation/images/testcan.JPG \"test can\")\n\n**Note:** received and sent bytes count (on the flipper screen) is not functionnal.\n\n## Development\n\n### documentation\n\nDocumentation can be found [here](./Documentation/html/index.html).\\\nTo re-generate documentation you have to install `doxygen` before running `Documentation/generate_doc.sh [--open]` (--open is used to open documentation after the generation). \n\n\n### architecture overview\n\nThis application is based on:\n- XTREME firmware USB-UART bridge application : It has been modified to send data on CAN (via SPI) and not on UART.\n- Longan Labs [Longan_CANFD](https://github.com/Longan-Labs/Longan_CANFD) library : this is the driver for the MCP 2518 CAN transceiver.\n\nApplication is built as an external app using standard fbt commands. Please refer to flipper documentation for more information.\n\n### Test status\nApplications has been tested with a MCP2515 evaluation board. As a consequence, only the following datarates are tested :\n- 125 Kbaud\n- 250 Kbaud\n- 500 Kbaud\n- 1 MBaud\n\n![Flipper zero CAN FD test setup](./Documentation/images/CAN_test.png \"Flipper zero CAN FD test setup\")\n\n**Note the flexible datarate is not tested yet.**\n\n### Known bugs\n\nMultiple exit and enters in application and its submode produce instable behaviour.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserma-safety-security%2FFlipper-Zero-CAN-FD-HS-SW","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserma-safety-security%2FFlipper-Zero-CAN-FD-HS-SW","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserma-safety-security%2FFlipper-Zero-CAN-FD-HS-SW/lists"}