{"id":18099526,"url":"https://github.com/barafael/ebyte-e32-ui","last_synced_at":"2025-08-09T03:18:40.409Z","repository":{"id":62375684,"uuid":"486742875","full_name":"barafael/ebyte-e32-ui","owner":"barafael","description":"Ebyte E32 Command Line Interface + Minimal Graphical User Interface","archived":false,"fork":false,"pushed_at":"2022-11-18T23:16:51.000Z","size":799,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-04T15:56:01.075Z","etag":null,"topics":["clap","embedded-hal","klask","lora","raspberry-pi","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barafael.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-28T20:43:11.000Z","updated_at":"2024-03-31T16:38:15.000Z","dependencies_parsed_at":"2023-01-22T06:00:25.189Z","dependency_job_id":null,"html_url":"https://github.com/barafael/ebyte-e32-ui","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barafael%2Febyte-e32-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barafael%2Febyte-e32-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barafael%2Febyte-e32-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barafael%2Febyte-e32-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barafael","download_url":"https://codeload.github.com/barafael/ebyte-e32-ui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248741144,"owners_count":21154250,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["clap","embedded-hal","klask","lora","raspberry-pi","rust"],"created_at":"2024-10-31T21:09:48.095Z","updated_at":"2025-04-13T15:55:33.583Z","avatar_url":"https://github.com/barafael.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ebyte-e32-ui\n\nEbyte E32 Command Line Interface + minimal GUI.\n\nWorks with Ebyte-E32 LoRa modules with configurable pin assignment.\nThe 3 GPIOs are controlled via linux cdev, and\nthe serial port is controlled by a normal `/dev/ttyXXX` character device.\n\nUses [ebyte-e32-rs](https://github.com/barafael/ebyte-e32-rs) as a driver,\nplus some traits from [embedded-hal](https://github.com/rust-embedded/embedded-hal) and their implementations from [linux-embedded-hal](https://github.com/rust-embedded/linux-embedded-hal).\n\nFor the CLI, [clap](https://github.com/clap-rs/clap) is used.\n\nFor the GUI, on top of clap, [klask](https://github.com/MichalGniadek/klask) is used.\n\n## Example Pinout and Configuration\n\nConfigurable with `Config.toml` in the same directory as the binary\n(or set the option `config`):\n\n```toml\nserial_path = \"/dev/ttyAMA0\"\nbaudrate = 9600\nparity = \"None\"\ndata_bits = 8\nstop_bits = 1\ngpiochip_path = \"/dev/gpiochip0\"\naux_pin = 18\nm0_pin = 23\nm1_pin = 24\n```\n\n| Ebyte Pin | Raspberry Pi Pin (BCM pin number) |\n|-----------|-----------------------------------|\n| VCC       | 3v3                               |\n| GND       | GND                               |\n| AUX       | 18                                |\n| M0        | 23                                |\n| M1        | 24                                |\n| TX        | 15 (RX)                           |\n| RX        | 14 (TX)                           |\n\n## CLI Usage Examples\n\nIn these examples, you can substitute `ebyte-e32-cli` with `cargo run --bin ebyte-e32-cli`\nif you are in the project root directory.\nThis directory also contains an example `Config.toml`.\n\n* Reading model data or parameters (good first test):\n\n    ```text\n    ebyte-e32-cli {read-model-data|read-parameters}\n    ```\n\n* Listen for transmissions:\n\n    ```text\n    ebyte-e32-cli listen\n    ```\n* Configure for address 1, channel 16, no forward error correction, permanent persistence:\n\n    ```text\n    ebyte-e32-cli configure --address 1 --channel 16 --fec off --persistence permanent\n    ```\n\nFor `send` mode, enter your messages in the prompt or pipe them in via `stdin`.\n\n## GUI Usage Notes\n\nThe GUI is the default target, meaning you can launch it with `cargo run`.\nFor sending data, the data provided in the `Input` tab is used (where you can also select a file to read the input from).\n\n## Configuration and Persistence\n\nWith the `Configuration` subcommand, the module parameters can be adjusted.\nNote that your module settings have to match the other module's settings for any transmission to be successful.\n\nWith the `persistence` option of the `Configuration` subcommand, the settings can be saved (`temporary` or `permanent`).\nIn `permanent` mode, the settings will be persisted onto the module.\n\n## Screenshots\n\nYou can run the GUI on your normal OS for testing.\n\nThese screenshots are slightly outdated but show the features of the GUI and CLI:\n\n[comment]: # (https://user-images.githubusercontent.com/6966738/198895795-4d86303b-e282-4a05-8b39-d640ff9164c3.png)\n[comment]: # (https://user-images.githubusercontent.com/6966738/198894630-6973925f-c167-433e-9375-8420d34d75a4.png)\n[comment]: # (https://user-images.githubusercontent.com/6966738/198893498-46752f22-6d51-4489-af25-c0965a7860d1.png)\n[comment]: # (https://user-images.githubusercontent.com/6966738/198893565-c187172b-1537-4fb9-a781-10f4e9425a33.png)\n[comment]: # (https://user-images.githubusercontent.com/6966738/198893601-feab2e98-d819-40b2-bb85-fffc83d21f9f.png)\n[comment]: # (https://user-images.githubusercontent.com/6966738/198895149-eb45ee81-d6e2-42b1-b0a5-840b524bc5f5.png)\n[comment]: # (https://user-images.githubusercontent.com/6966738/198895230-c795f820-9af3-45fb-bbad-dd2ba84f4b48.png)\n[comment]: # (https://user-images.githubusercontent.com/6966738/198895335-6e06b4ac-0d1c-4260-b8bc-c8e662ad4567.png)\n\n\u003cimg src=\"https://user-images.githubusercontent.com/6966738/198895795-4d86303b-e282-4a05-8b39-d640ff9164c3.png\" width=\"23%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/6966738/198894630-6973925f-c167-433e-9375-8420d34d75a4.png\" width=\"23%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/6966738/198893498-46752f22-6d51-4489-af25-c0965a7860d1.png\" width=\"23%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/6966738/198893565-c187172b-1537-4fb9-a781-10f4e9425a33.png\" width=\"23%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/6966738/198893601-feab2e98-d819-40b2-bb85-fffc83d21f9f.png\" width=\"23%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/6966738/198895149-eb45ee81-d6e2-42b1-b0a5-840b524bc5f5.png\" width=\"23%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/6966738/198895230-c795f820-9af3-45fb-bbad-dd2ba84f4b48.png\" width=\"23%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/6966738/198895335-6e06b4ac-0d1c-4260-b8bc-c8e662ad4567.png\" width=\"23%\"\u003e\u003c/img\u003e\n\n## System Requirements + Portability\n\nThe underlying driver ([ebyte-e32-rs](https://github.com/barafael/ebyte-e32-rs)) is platform-agnostic\n(doesn't require linux, just implementations of `embedded-hal`).\n\nThis program requires a linux character device and 3 CDEV GPIO lines.\n\nFor the character device, it should be available as `/dev/ttyABC`.\nNote that (depending on your distribution)\nyou may have to add your user to certain groups\nto be able to use the serial port, like `dialout`.\n\nFor the GPIO lines, find your boards `gpiochipXXX` in\n`/sys/class/gpio/gpiochipXXX`, then\nfind the lines you want to connect and\nenter the info in `Config.toml`.\n\nThe AUX line must support being an input line,\nthe M0 and M1 lines must support being output lines.\n\n## CLI Help\n\nTop-level help:\n\n```text\nebyte-e32-ui 0.5.0\nCLI + GUI for interacting with EByte E32 LoRa modules\n\nUSAGE:\n    ebyte-e32-cli [OPTIONS] \u003cSUBCOMMAND\u003e\n\nOPTIONS:\n        --config \u003cCONFIG\u003e    Configuration file [default: Config.toml]\n    -h, --help               Print help information\n    -V, --version            Print version information\n\nSUBCOMMANDS:\n    configure          Write Ebyte module parameters\n    help               Print this message or the help of the given subcommand(s)\n    listen             Listen for incoming data on the Ebyte module\n    read-model-data    Read Ebyte module data and print to stdout\n    read-parameters    Read Ebyte module parameters and print to stdout\n    send               Send data from stdin over the Ebyte module\n```\n\nConfiguration subcommand help (`ebyte-e32-cli help configure`):\n\n```text\nebyte-e32-cli-configure\nWrite Ebyte module parameters\n\nUSAGE:\n    ebyte-e32-cli configure [OPTIONS] --address \u003cADDRESS\u003e --channel \u003cCHANNEL\u003e\n\nOPTIONS:\n    -a, --address \u003cADDRESS\u003e\n            Module Address (16 Bit)\n\n        --air-rate \u003cAIR_RATE\u003e\n            Air Baudrate [default: bps2400] [possible values: bps300, bps1200, bps2400, bps4800,\n            bps9600, bps19200]\n\n    -c, --channel \u003cCHANNEL\u003e\n            Channel (8 Bit)\n\n        --fec \u003cFEC\u003e\n            Forward Error Correction Mode [default: on] [possible values: on, off]\n\n    -h, --help\n            Print help information\n\n        --io-drive-mode \u003cIO_DRIVE_MODE\u003e\n            IO drive Mode for AUX pin [default: push-pull] [possible values: push-pull,\n            open-collector]\n\n        --persistence \u003cPERSISTENCE\u003e\n            Whether settings should be saved persistently on the module [default: temporary]\n            [possible values: temporary, permanent]\n\n        --transmission-mode \u003cTRANSMISSION_MODE\u003e\n            Transmission Mode [default: transparent] [possible values: transparent, fixed]\n\n        --transmission-power \u003cTRANSMISSION_POWER\u003e\n            Transmission Power [default: dbm30] [possible values: dbm30, dbm27, dbm24, dbm21]\n\n        --uart-parity \u003cUART_PARITY\u003e\n            UART Parity [default: none] [possible values: none, odd, even]\n\n        --uart-rate \u003cUART_RATE\u003e\n            UART Baudrate [default: bps9600] [possible values: bps1200, bps2400, bps4800, bps9600,\n            bps19200, bps38400, bps57600, bps115200]\n\n        --wakeup-time \u003cWAKEUP_TIME\u003e\n            Wireless Wakeup Time [default: ms250] [possible values: ms250, ms500, ms750, ms1000,\n            ms1250, ms1500, ms1750, ms2000]\n```\n\nThe other subcommands have no further options.\n\n## Raspberry Pi Serial Port Setup\n\nThe serial port hardware peripheral must be enabled (but without login shell).\n\n## Simplified Dependency Graph\n\n![graph](graph.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarafael%2Febyte-e32-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarafael%2Febyte-e32-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarafael%2Febyte-e32-ui/lists"}