{"id":15142117,"url":"https://github.com/beryllium-org/os","last_synced_at":"2025-05-16T14:05:13.339Z","repository":{"id":37591010,"uuid":"434342707","full_name":"beryllium-org/OS","owner":"beryllium-org","description":"Beryllium OS, a unix-like operating system for CircuitPython powered microcontrollers. (Formerly known as ljinux)","archived":false,"fork":false,"pushed_at":"2025-03-09T14:33:13.000Z","size":13630,"stargazers_count":288,"open_issues_count":3,"forks_count":17,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-05-16T14:05:10.930Z","etag":null,"topics":["beryllium","cardputer","circuitpython","embedded","esp32","esp32-c3","esp32-c6","esp32-s2","esp32-s3","m5stack-cardputer","microcontroller","nrf52840","python","rp2040","samd51","seeed-wio-terminal"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beryllium-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null}},"created_at":"2021-12-02T19:07:40.000Z","updated_at":"2025-05-06T11:23:08.000Z","dependencies_parsed_at":"2024-02-08T20:48:02.386Z","dependency_job_id":"8621a5a6-fde7-4ee9-92b0-4f47ee206b6f","html_url":"https://github.com/beryllium-org/OS","commit_stats":{"total_commits":1439,"total_committers":9,"mean_commits":"159.88888888888889","dds":0.08964558721334259,"last_synced_commit":"72e3538261c6ee9c6e9819cf32ac7eb926402ffe"},"previous_names":["beryllium-org/os","bill88t/ljinux"],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beryllium-org%2FOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beryllium-org%2FOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beryllium-org%2FOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beryllium-org%2FOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beryllium-org","download_url":"https://codeload.github.com/beryllium-org/OS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254544146,"owners_count":22088807,"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":["beryllium","cardputer","circuitpython","embedded","esp32","esp32-c3","esp32-c6","esp32-s2","esp32-s3","m5stack-cardputer","microcontroller","nrf52840","python","rp2040","samd51","seeed-wio-terminal"],"created_at":"2024-09-26T09:23:07.357Z","updated_at":"2025-05-16T14:05:13.318Z","avatar_url":"https://github.com/beryllium-org.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Beryllium OS\nA unix-like operating system for CircuitPython powered microcontrollers.  \u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\u003cbr /\u003e\n(Formerly known as ljinux)\u003cbr /\u003e\n![neofetch](other/screenshots/boot.gif)\u003cbr /\u003e\n\u003cb\u003eImportant notes:\u003c/b\u003e\u003cbr /\u003e\nThis project is still \u003cb\u003ein it's early developement\u003c/b\u003e!\u003cbr /\u003e\nThe kernel API is undergoing massive breaking changes every day.\u003cbr /\u003e\nThis project is \u003cb\u003eNOT\u003c/b\u003e a linux distribution.\u003cbr /\u003e\nThis project is \u003cb\u003eNOT\u003c/b\u003e compatible with any linux code / binaries.\u003cbr /\u003e\n\n\u003cb\u003e\u003ci\u003eWe also now have a [discord](https://discord.gg/V8AejwGpCv) server!\u003cbr /\u003e\nIf you need support or want to hang out, feel free to join in!\u003c/i\u003e\u003c/b\u003e\u003cbr /\u003e\n\nWe also work with [Github Discussions](https://github.com/beryllium-org/OS/discussions).\u003cbr /\u003e\n\nTable of Contents\n=================\n* [Prerequisites](#prerequisites-and-hardware-support)\n* [Installation / updating](#installation--updating)\n* [Packages](#packages)\n* [Connection](#connection)\n* [Directory structure](#directory-structure)\n* [Manual](#a-complete-beryllium-manual-is-available)\n* [Useful resources](#useful-resources-that-helped-with-the-development-of-this-project)\n\n## Prerequisites and hardware support\n\nRuns on CircuitPython \u003ccode\u003e9.0.X\u003c/code\u003e, \u003ccode\u003e9.1.X\u003c/code\u003e and \u003ccode\u003e9.2.X\u003c/code\u003e.\u003cbr /\u003e\nCurrently the supported boards are:\u003cbr /\u003e\n\nEspressif:\u003cbr /\u003e\n - 01Space ESP32-C3-0.42LCD\u003cbr /\u003e\n - Adafruit Feather ESP32-S2\u003cbr /\u003e\n - Adafruit Feather ESP32-S3 TFT\u003cbr /\u003e\n - AiThinker ESP32-CAM\u003cbr /\u003e\n - DFRobot Beetle ESP32-C3\u003cbr /\u003e\n - Firebeetle 2 ESP32-S3\u003cbr /\u003e\n - LILYGO T-Deck\u003cbr /\u003e\n - LILYGO T-Watch-S3\u003cbr /\u003e\n - M5Stack Cardputer (Requires 9.1.0-beta1 or later)\u003cbr /\u003e\n - M5Stack Timer Camera X\u003cbr /\u003e\n - MakerGo C3 Supermini\u003cbr /\u003e\n - MakerGo C6 Supermini\u003cbr /\u003e\n - NodeMcu ESP32-C2 (experimental support)\u003cbr /\u003e\n - Wemos Lolin S2 Mini\u003cbr /\u003e\n - WeAct ESP32-C6\u003cbr /\u003e\n - Waveshare ESP32-S2-Pico\u003cbr /\u003e\n - Waveshare ESP32-S3-Zero\u003cbr /\u003e\n\nRaspberry Pi:\u003cbr /\u003e\n - Adafruit KB2040\u003cbr /\u003e\n - Adafruit Feather RP2350\u003cbr /\u003e\n - Pimoroni Pico Lipo (16mb)\u003cbr /\u003e\n - Pimoroni Pico Lipo (4mb)\u003cbr /\u003e\n - Raspberry Pi Pico\u003cbr /\u003e\n - Raspberry Pi Pico W\u003cbr /\u003e\n - Raspberry Pi Pico 2\u003cbr /\u003e\n - Waveshare RP2040-Zero\u003cbr /\u003e\n - Waveshare RP2040-Tiny\u003cbr /\u003e\n\nNordic:\u003cbr /\u003e\n - Seeed XIAO nRF52840 (Sense)\u003cbr /\u003e\n - Nice!Nano (Limited storage and preinstalled packages)\u003cbr /\u003e\n\nSAMD:\u003cbr /\u003e\n - Seeed Wio Terminal\u003cbr /\u003e\n\n\u003cbr /\u003e\nBut it can probably run on many more.\u003cbr /\u003e\n\u003cbr /\u003e\nThe currently stable supported MCUs are: \u003ccode\u003eESP32\u003c/code\u003e, \u003ccode\u003eESP32-S2\u003c/code\u003e, \u003ccode\u003eESP32-S3\u003c/code\u003e, \u003ccode\u003eESP32-C3\u003c/code\u003e, \u003ccode\u003eESP32-C6\u003c/code\u003e, \u003ccode\u003eRP2040\u003c/code\u003e, \u003ccode\u003eRP2350\u003c/code\u003e, \u003ccode\u003enRF52840\u003c/code\u003e, \u003ccode\u003eSAMD51\u003c/code\u003e.\u003cbr /\u003e\nThe currently unstable MCUs (experimental support) are: \u003ccode\u003eESP32-C2\u003c/code\u003e.\u003cbr /\u003e\nThe currently unsupported CircuitPython-compatible MCU families / CircuitPython platforms are: \u003ccode\u003eSAMD21\u003c/code\u003e, \u003ccode\u003elitex\u003c/code\u003e, \u003ccode\u003emimxrt10xx\u003c/code\u003e, \u003ccode\u003eefr32\u003c/code\u003e, \u003ccode\u003estm\u003c/code\u003e.\u003cbr /\u003e\nThe MCU's that are currently unsupported are so because I either can't get my hands on a decent board with them or they don't have enough ram for it.\u003cbr /\u003e\n\u003cbr /\u003e\nThe only real limiting factor should be ram, as about 70k (usable under circuitpython) are needed.\u003cbr /\u003e\n\u003ci\u003e(If you have gotten it running on an unsupported board, feel free to pr)\u003c/i\u003e\u003cbr /\u003e\n\n## Installation / Updating\n\nInstallation from windows using scripts is only **supported** through WSL.\u003cbr /\u003e\nThough, if you are windows user, this project **really** isn't for you.\u003cbr /\u003e\nLinux and MacOS will work much better.\u003cbr /\u003e\n\n1) Install a supported CircuitPython version onto the board.\u003cbr /\u003e\n    Detailed instructions regarding CircuitPython can be found [here](https://learn.adafruit.com/welcome-to-circuitpython).\u003cbr /\u003e\n2) Download the latest Beryllium OS release for your board and extract it onto it.\u003cbr /\u003e\n    If your board has no stable release just yet, or you wish to use the latest and greatest, clone this repository and from within the \"source\" folder, run \u003ccode\u003emake install\u003c/code\u003e with your board mounted.\u003cbr /\u003e\n    DO NOT run with \u003ccode\u003e-j\u003c/code\u003e!!! GNU/Make is assumed to be installed.\u003cbr /\u003e\n    This command will automatically update the system files if they already exist.\u003cbr /\u003e\n    To only update the core files, run \u003ccode\u003emake kernel\u003c/code\u003e instead.\u003cbr /\u003e\n    If you only want to update the board extras, like drivers and packages, run \u003ccode\u003emake extras\u003c/code\u003e instead.\u003cbr /\u003e\n    If you plan on loading the files remotely (via web/ble workflow), run \u003ccode\u003emake BOARD=\\*your board.board_id\\* install\u003c/code\u003e instead.\u003cbr /\u003e\n    The files for you to copy will be created inside \u003ccode\u003esource/build_\\*your board.board_id\\*\u003c/code\u003e.\u003cbr /\u003e\n3) *(Optional)* Load / Strap 3rd party packages.\u003cbr /\u003e\n    More info regarding packages in [Packages](#packages)\n4) Eject \u0026 powercycle the board\u003cbr /\u003e\n    When it's plugged back in, you can connect to it via serial.\u003cbr /\u003e\n    (You can use putty to connect to the board on Windows, Tio or GNU/Screen on Linux or MacOS)\u003cbr /\u003e\n    Most Wi-Fi boards will start an AP and a telnet server. You can connect with default Wi-Fi credentials.\u003cbr /\u003e\n    More info under [Connection](#connection)\n\u003cb\u003eIMPORTANT NOTE: To make the board appear again as a usb drive on the host, run the Beryllium command \u003c/b\u003e\u003ccode\u003edevmode\u003c/code\u003e.\u003cbr /\u003e\nMore info regarding internal commands, available in the manual.\u003cbr /\u003e\n\n## Packages\nMost of what you need to use your board is already included with the stock installation. (Whatever drivers are implemented, are preloaded)\u003cbr /\u003e\nHowever it's possible to install 3rd party packages using the Beryllium OS' package manager JPKG.\u003cbr /\u003e\nYou will have to install them seperately through the jpkg package manager.\u003cbr /\u003e\n\u003cbr /\u003e\nYou can find beryllium packages in the [jpkg github topic](https://github.com/topics/jpkg).\u003cbr /\u003e\n\n## Connection\n\nTo connect to the board it's recommended to use Putty for Windows and Tio for Linux/MacOS.\u003cbr /\u003e\nA console that works with ANSI escape commands is \u003cb\u003eREQUIRED\u003c/b\u003e (aka, not arduino ide).\u003cbr /\u003e\u003cbr /\u003e\n\nFor Putty, select connection type to be Serial, select the port to be COM\u003cb\u003eX\u003c/b\u003e where \u003cb\u003eX\u003c/b\u003e is the number of the serial port allocated by the board, and set the speed/baudrate to 115200.\u003cbr /\u003e\n(You can find which com port is allocated from within the Device Manager, it usually is COM3 or COM4)\u003cbr /\u003e\u003cbr /\u003e\n\nFor Tio if you are on linux, you need to be in the \u003ccode\u003edialout\u003c/code\u003e or \u003ccode\u003euucp\u003c/code\u003e user group and to connect, run: \u003ccode\u003etio /dev/ttyACM0\u003c/code\u003e\u003cbr /\u003e\nIf you are on a Mac instead, run: \u003ccode\u003els /dev/tty.usb*\u003c/code\u003e to find the device name, and connect to it by running: \u003ccode\u003etio /dev/tty.usb\\\u003cDevice name here\\\u003e\u003c/code\u003e\u003cbr /\u003e\nTo disconnect, press \u003ccode\u003eCtrl\u003c/code\u003e + \u003ccode\u003et\u003c/code\u003e, \u003ccode\u003eq\u003c/code\u003e.\u003cbr /\u003e\nTo be added to the \u003ccode\u003edialout\u003c/code\u003e group, run \u003ccode\u003esudo usermod -a -G dialout \\\u003cyour username here\\\u003e\u003c/code\u003e and restart.\u003cbr /\u003e\n\nWi-Fi boards by default start a Wi-Fi hotspot by default and a telnet server.\u003cbr /\u003e\nThe default wifi credentials are: \u003ccode\u003eberyllium-ap\u003c/code\u003e/\u003ccode\u003eCHANGEME WIFI PASSWORD\u003c/code\u003e and can be changed from \u003ccode\u003e\u0026/settings.toml\u003c/code\u003e\u003cbr /\u003e\nThe default hotspot IP is \u003ccode\u003e192.168.4.1\u003c/code\u003e.\u003cbr /\u003e\n\n## Directory structure\n\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ebase\u003c/code\u003e, the base root filesystem that will be used to strap all other packages over it.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBoardfiles\u003c/code\u003e, the different board ports and their configuration data.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ebootcfg\u003c/code\u003e, boot configuration files, to be cherrypicked by ports.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edrivers\u003c/code\u003e, different device drivers that may be build depending on the board.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eother\u003c/code\u003e, miscellaneous files, not used during installation.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epackages\u003c/code\u003e, most of these (if they are compatible with your board) will be bundles with every new installation.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003escripts\u003c/code\u003e, the files needed for compilation, and installation to a board.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esource\u003c/code\u003e, the source files for this project and co. They should be compiled into .mpy files, then into packages.\u003c/li\u003e\n\u003c/ul\u003e\n\n## A complete Beryllium manual is available\n\n https://github.com/beryllium-org/OS/blob/main/Manual.txt\u003cbr /\u003e\n \u003cbr /\u003e\n\n## Additional screenshots\n![less](other/screenshots/less.png)\n![iwctl](other/screenshots/iwctl.png)\n\n## Useful resources that helped with the development of this project\n https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797\u003cbr /\u003e\n https://en.wikipedia.org/wiki/ANSI_escape_code\u003cbr /\u003e\n https://github.com/todbot/circuitpython-tricks\u003cbr /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberyllium-org%2Fos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fberyllium-org%2Fos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberyllium-org%2Fos/lists"}