Firmware for Pinetime smartwatch written in C/C++ and based on FreeRTOS

InfiniTime

Build PineTime Firmware

InfiniTime logo

The goal of this project is to design an open-source firmware for the Pinetime smartwatch :

New to InfiniTime?

Overview

Pinetime screens

As of now, here is the list of achievements of this project:

  • Fast and optimized LCD driver
  • BLE communication
  • Rich user interface via display, touchscreen and pushbutton
  • Time synchronization via BLE
  • Notification via BLE
  • Heart rate measurements
  • Step counting
  • Wake-up on wrist rotation
  • Quick actions
    • Disable vibration on notification
    • Brightness settings
    • Flashlight
    • Settings
  • 3 watch faces:
  • Multiple 'apps' :
    • Music (control the playback of music on your phone)
    • Heart rate (measure your heart rate)
    • Navigation (displays navigation instructions coming from the companion app)
    • Notification (displays the last notification received)
    • Paddle (single player pong-like game)
    • Twos (2048 clone game)
    • Stopwatch
    • Steps (displays the number of steps taken)
    • Timer (set a countdown timer that will notify you when it expires)
    • Metronome (vibrates to a given bpm with a customizable beats per bar)
  • User settings:
    • Display timeout
    • Wake-up condition
    • Time format (12/24h)
    • Default watch face
    • Daily step goal
    • Battery status
    • Firmware validation
    • System information
  • Supported by 3 companion apps (development is in progress):
  • OTA (Over-the-air) update via BLE
  • Bootloader based on MCUBoot

Documentation

Develop

Build, flash and debug

Contribute

API

Architecture and technical topics

Using the firmware

TODO - contribute

This project is far from being finished, and there are still a lot of things to do for this project to become a firmware usable by the general public.

Here a quick list out of my head of things to do for this project:

  • Improve BLE communication stability and reliability
  • Improve OTA and MCUBoot bootloader
  • Add more functionalities : Alarm, chronometer, configuration, activities, heart rate logging, games,...
  • Add more BLE functionalities : call notifications, agenda, configuration, data logging,...
  • Measure power consumption and improve battery life
  • Improve documentation, take better pictures and video than mine
  • Improve the UI
  • Create companion app for multiple OSes (Linux, Android, iOS) and platforms (desktop, ARM, mobile). Do not forget the other devices from Pine64 like the Pinephone and the Pinebook Pro.
  • Design a simple CI (preferably self-hosted and easy to reproduce).

Do not hesitate to clone/fork the code, hack it and create pull-requests. I'll do my best to review and merge them :)

Licenses

This project is released under the GNU General Public License version 3 or, at your option, any later version.

It integrates the following projects:

Credits

I’m not working alone on this project. First, many people create PR for this projects. Then, there is the whole #pinetime community : a lot of people all around the world who are hacking, searching, experimenting and programming the Pinetime. We exchange our ideas, experiments and code in the chat rooms and forums.

Here are some people I would like to highlight:

  • Atc1441 : He works on an Arduino based firmware for the Pinetime and many other smartwatches based on similar hardware. He was of great help when I was implementing support for the BMA421 motion sensor and I²C driver.
  • Koen : He’s working on a firmware based on RiotOS. He integrated similar libs as me : NimBLE, LittleVGL,… His help was invaluable too!
  • Lup Yuen Lee : He is everywhere: he works on a Rust firmware, builds a MCUBoot based bootloader for the Pinetime, designs a Flutter based companion app for smartphones and writes a lot of articles about the Pinetime!

If you feel like you should appear on this list, just get in touch with me or submit a PR :)

Owner
InfiniTime
InfiniTime is a FOSS firmware for the PineTime, the open source smartwatch from Pine64
InfiniTime
Comments
  • Watch does not automatically reconnect to GadgetBridge after turning airplane mode on and off

    Watch does not automatically reconnect to GadgetBridge after turning airplane mode on and off

    InfiniTime version: 1.0.0 RC3 Gadgetbridge version: 0.56.1

    Steps to reproduce:

    1. Pair InfiniTime with Gadgetbridge, enable the "Reconnect automatically" setting in GB
    2. While the two are connected turn airplane mode on and then off after the watch is disconnected
    3. GB tries to reconnect, first with status "Connecting" and then gets stuck with "Waiting for reconnect"

    The workaround I have found is to fully disconnect in GB - status "Not connected" and then pair the watch again. Restarting the watch or Gadgetbridge did not seem to help.

    I don't know if the problem is with GB or IT but it would be nice if the two could automatically reconnect in this scenario if possible.

  • Connect and bond with a passkey

    Connect and bond with a passkey

    Add Feature - Connect and bond with a passkey

    • [X] Passkey pairing - passkey is displayed on watch and entered on phone
    • [X] Swipe down to clear passkey screen
    • [X] Connection encryption
    • [X] Connection bonding
    • [X] Automatic reconnects to bonded peripheral*
    • [X] Trusted device on Android
    • [X] Persist bond between reboots

    * ~~Rebooting the watch will cause reconnect failures. You must delete the bond from the phone to reconnect/pair. Persisting the bond between reboots will resolve this.~~

    Closes #224 Closes #302 Closes #502

    There are several tasks listed below that I have listed as future work in order to make this PR easier to review and test.

    Future work includes the following tasks:

    • Investigate encrypting other characteristics
    • Explore if a delete bond option in settings is desirable/needed
    • Enable RPA
    • Automatically clear the passkey screen on pairing completion
    • Enable the whitelist to conserve power and prevent non-bonded devices from pairing
  • New touch handler

    New touch handler

    • Greatly improved responsiveness. Demonstration in #471.
    • TouchModes are no longer needed.
    • LVGL is now correctly told about the touch positions and times. Dragging, holding and long pressing etc. should now always work correctly. LVGL isn't aware if apps or screens have changed, so CancelTap() is used to stop the current touch from activating buttons.
    • Cleaned up touchdriver code. Events (0 = Down, 1 = Up, 2 = contact) seem inconsistent, so they're replaced with a simple boolean touching.
    • For a single touch, only one swipe gesture can be generated. This fixes double gesture in Twos and when swiping up during the animation going from QuickSettings to watch face.

    This code probably requires further stress testing to make sure it always works correctly.

    Implements #471 and fixes #491.

  • Infineat Watchface

    Infineat Watchface

    This PR implements the new watchface Infineat.

    For anyone interested in trying it, it is already available here.

    Note: the linked version differs slightly from the one in this PR, since it adds extended Latin support.


    demo


    This PR also implements a handy CheckboxList (check the watchface list in the above demo). I kept this class as general as possible, along the lines of Tile or ApplicationList, so that it can be used for other purposes as well.

    This watchface could be considered "heavy" in terms of flash storage, since it adds two new fonts and an image. However, I've tried to keep things at their absolute minimum. One of the fonts only includes numbers (Bebas Neue, the main font used for the time) and the other (Teko) includes the characters [A-Za-z0-9]. The range of the letters in the Teko font could even be reduced, since they are only used for the days of the week ("Mon", "Tue", "Wed", etc).

    The image is the PINE64 logo and has a size of 23x31px. I tried to make its background transparent so that it could be used in other places, but I didn't get it to render correctly. So in the end the background is white. If someone wants to try to make it transparent, I can provide the original SVG.

    For a comparison, the latest build in develop:

     Memory region         Used Size  Region Size  %age Used
               FLASH:      403028 B       480 KB     82.00%
                 RAM:       54872 B        64 KB     83.73%
    

    And the Infineat build:

    Memory region         Used Size  Region Size  %age Used
               FLASH:      416464 B       480 KB     84.73%
                 RAM:       54984 B        64 KB     83.90%
    
  • Lvgl simulation run PineTime screens on your PC

    Lvgl simulation run PineTime screens on your PC

    Add simulator to have pinetime Screens on PC for development.

    The first Screen can be run locally, using your mouse to play Paddle.h!

    2021-10-13_lv_sim_paddle

    based on lvgl 8 port #734

    lv_sim based on: https://github.com/lvgl/lv_sim_eclipse_sdl


    2021-11-03 updated screens with PineTime fonts

    Screenshot_20211103_214140 Screenshot_20211103_214323 Screenshot_20211031_100600


    2021-11-07 new Screen Metronome and the first simulated external: MotorController (shown by red dot)

    Metronome.h


    2021-11-15 new Screen BatteryInfo.h with a very low Battery, according to the BatteryController.h stub

    BatteryInfo.h


    2021-11-28 rebased on develop branch getting the new v1.7.1 version of FlashLight.h

    flashlight_light flashlight_dark


    2021-11-30 All three PineTime Watch Faces are working now: WatchFaceDigital.h, WatchFaceAnalog.h and PineTimeStyle.h

    WatchFaceDigital WatchFaceAnalog PineTimeStyle


    2021-12-02 Can trigger a Notification, got the system time, and the first Settings-Screen QuickSettings.h

    20211202_WatchFaceDigital 20211202_WatchFaceAnalog 20211202_PineTimeStyle 2021-12-02_Quicksettings


    2021-12-03 Fix "score" alignment in Twos.h by upgrading lvgl submodule to the current master (v8.1.0-64-g628299676)

    2021-12-03 Twos fixed align and with lvgl-8.1-master

    2022-01-16 Ported the simulator to use lvgl7 like current PineTime firmware! much less porting and maintenance burden! :tada: And Music.h has shown up!

    WatchfaceDigital WatchfaceAnalog WatchfacePineStyle

    Paddle Twos Metronome

    Meter Battery

    Torch Black Torch White QuickSettings

    Music InfiniPaint


    2022-01-21: SystemInfo.h's first Screen, others available, but no swipe yet

    SystemInfo Screen 1


    2022-01-25: Swiping now works and most Screens are implemented

    2022-01-25_lv_sim_swiping


    2022-01-27: add SettingSetDate.h and SettingSetTime.h

    SettingsSetDateSettingSetTime


    2022-01-29: add Screen is OFF overlay when brightness is set to Off. Also add Notifications.h

    Screen is OFF message Notifications.h


    2022-01-30: add the last screens FirmwareValidator.h, FirmwareUpdater.h and PassKey.h

    FirmwareValidator FirmWareUpdater PassKey


    2022-02-02: increase and decrease steps (s/S) and heartrate (h/H)

    WatchFaceDigital with steps and heartrate

  • Refactor ble advertising logic

    Refactor ble advertising logic

    This is my WIP attempt to resolve the ble re-connect issue and get more reliable ble behavior. Comments, discussion, and suggestions are welcome. I'm testing on both my watch and dev-kit. The watch has been connected now for 3+ days. The dev-kit still fails periodically. I'm using both nRFConnect and GB for testing. I am (still) waiting on the breakout to connect my Segger JLink and gaze into the dumpster fire that is ble.

    • Refactor ble advertising based on ble standards and conventions.
    • Changes are based on the bleprph example code, bluetooth docs, and nimble docs.
  • External flash usage

    External flash usage

    It would be good to map out where LittleFS would potentially be used in InfiniTime, right now and in the future. What would have to be migrated and what can't be migrated.

    Current usages of flash contain:

    • [x] Bootloader scratch sections
    • [x] Settings storage
    • [x] Datetime backup (https://github.com/JF002/InfiniTime/issues/87)

    Future usages might contain:

    • [x] Resource storage (for LVGL)
    • [ ] Buffer for HR/step data (https://github.com/JF002/InfiniTime/issues/493)
    • [ ] ??? Please leave your comment below
  • Resources (fonts & pictures) packaging

    Resources (fonts & pictures) packaging

    Verification

    • [X] I searched for similar feature request and found none was relevant.

    Pitch us your idea!

    Let's specify how resources will be packaged and handled by companion apps

    Description

    In #321 I did a lot of experiments with the external flash storage and the file system. The goal is to use this external flash memory to store big resources (pictures and fonts) so that we can free quite a lot of space in the internal flash memory.

    In this comment, I listed the action points that must be done before we can release this feature. This discussion is about the resources packaging and management by companion app : how will we packaged the resource files so companion app can upload them to the watch using the BLE FS API ?

    Please note that this is a technical discussion mostly targeted to InfiniTime and companion apps developers.

    During my experiments, I used ITD to manually upload previously generated binary files to the watch. I sometimes needed to retry because the transfer would fail for some reason. I also had no way to check if the data were corrupted during the transfer. The upload of a full picture (24024016b = 115200B) took ~2 minutes, iirc.

    Sending random binary files to the watch does not fit well with the end-users. I would like all the file to be automatically generated at build time (this is not the scope of this discussion), packaged into a single file with all the info needed for companion app to automatically upload the files to the watch.

    Here's my proposal :

    • package all the files in a compressed file format (.tar.gz or .zip). Maybe change the file extension to something else (InfiniTime Resource Format, IRF)
    • add a small 'manifest' file that companion app will be able to use to identify this archive as a resource pack for InfiniTime
      • Could be as simple as a JSON file with the target infinitime version :
    { 
      "infinitime" : "1.11"
    }
    
    • it could also contain the file mapping (path and name of each file from the archive -> path and name in the in the PineTime FS)
    {
      "files": [
        {
          "file1.bin": "/resources/watchface1/background.bin"
        },
        {
          "file2.bin": "/resources/watchface2/font.bin"
        }
      ]
    }
    
    • this file could also contain other meta data in the future
    • I don't think our BLE API supports any kind of CRC functionality. The companion app will be able to check the data validity by reading back the file it has just transferred.
    • I noticed that overwriting a file is very slow. If the file already exists, I recommend to delete it first before writing it again.

    Questions:

    • Am I missing anything?
    • Is there some kind of existing standard that we could use instead of creating a new one?

    So... this is a request for comment. Will this simple packaging strategy work well with InfiniTime and companion app to upload fonts and pictures in the external flash storage?

  • Shake wake

    Shake wake

    Adds shake to wake by calculating Y/Z acceleration. Essentially a gentle wrist flick action will turn the screen on.

    I think its set to be a hair over sensitive as of the moment. Looking for some feedback there. In the long run I want to break out a settings option to select how sensitive it is, but not there yet.

    .

  • add terminal watchface

    add terminal watchface

    I tried to add watchface found here https://zephyrlabs.github.io/Watchfaces/Terminal/, I asked the developer and he doesn't mind. but now I am not able to check its work.

  • Bluetooth connection still dropping out

    Bluetooth connection still dropping out

    So, I updated to version 1.6, but I still have the issue where after a number of hours that the bluetooth connection drops out, and Gadgetbridge can't reconnect until the watch is restarted. After restarting, pairing works fine.

    Steps to reproduce:

    1. Pair watch to phone
    2. Wait 12-24 hours.
    3. Watch bluetooth connection resets.

    Expected behavior: Connection remains active.

    Specs: Infinitime 1.6 with 1.0 bootloader flashed by Gadgetbridge 0.59.3 on Android 10 on a Samsung Galaxy A51. Is there any other info that would be useful?

  • [new watchface] watchface inspired by the Pebble Watch

    [new watchface] watchface inspired by the Pebble Watch

    Preview

    InfiniSim_2022-11-27_180038

    New resources

    SquareRegular_72 (src/resources/fonts/SquareRegular.ttf) SquareRegular_20 (src/resources/fonts/SquareRegular.ttf)

    The smaller font is rendered with 2bpp, since otherwise the non-numerical characters get smushed. Originally I intended to use "leco 1976" as it would be the closest match but after researching I think this is not a public domain font.

    https://www.fontspace.com/square-font-f19483

    Description

    Hi! Weeks ago I stumbled upon this Pebble watchface: image

    I really liked the idea of having the step count be indicated by a progress bar wrapping around the edge of the screen. However other then that I took a quite minimalist approach in cutting stuff that I usually do not use or need:

    • Heart rate: I normally have the sensor disabled, so there is not much point in displaying
    • Current year: I think besides the beginning of the year where it might be a nice reminder, everyone knows what the current year is :^)
    • Bluetooth status: I usually have the radio enabled and the watch connected. Applying the reverse would be interesting - having an indicator when the watch is somehow disconnected.

    Reducing the amount of displayed things allowed for the battery percentage to be displayed more prominently, since this is a thing that I do regularly check upon. Since adding an icon for the charging state felt out of place in this "icon-less" design I added a animation of the battery bar when the watch is charging.

    The name of the watchface is Gravel since it is inspired by a Pebble watchface but other then that I changed quite a few things :^). If anyone has a better suggestion feel free to drop it.

  • Bricking pinewatch using large size firmware for testing

    Bricking pinewatch using large size firmware for testing

    Verification

    • [X] I searched for similar bug reports and found none was relevant.

    What happened?

    Brick pinewatch after testing feature (twice)

    What should happen instead?

    Linker error if build is not fit in available flash memory.

    Reproduction steps

    1. Update code with adding feature so image size should use more than 95% of available internal flash.
    2. Flash image to the dev kit using DFU.
    3. Reboot the device to back into previous firmware

    Then pinewatch start to be in constant reboot.

    More details?

    I tried to figure out what I'm doing wrong and found that InfinityTime uses magic internal flash addresses for saving some boot configuration, so I guess that rewriting this data is cause of this issue. I would suggest to do the following thing to avoid this issue for debug builds and for future InfinityTime releases which might start use more flash memory:

    1. Update linker script to have addresses of each magic variable in it.
    2. Update linker script with decreasing size of available internal flash memory size to avoid overlapping firmware and boot configuration flags.
    3. Update bootloader (not sure if it is possible to do for all users) to use last page for storing boot flags.
    4. Update documentation with flash memory map to let developers know which memory limitations they have.

    I found at least one magic boot flags which is not present in the linker script and which might be overwritten by firmware:

    FirmwareValidator::validBitAdress {0x7BFE8}; // Magic address!!!
    

    So to avoid overlapping with this address available internal flash memory should be decreased to 0x5000 bytes!

     MEMORY
     {
    -  FLASH (rx) : ORIGIN = 0x08020, LENGTH = 0x78000
    +  FLASH (rx) : ORIGIN = 0x08000, LENGTH = 0x73000
       RAM (rwx) :  ORIGIN = 0x20000000, LENGTH = 64K
     }
    

    Alternative option is somehow update bootloader to the latest page for this purposes, i.e. address 0x7FFFE8.

    Note: I'm not sure if any other magic addresses are used somewhere else.

    Version

    https://github.com/AlexXZero/InfiniTime/releases/tag/1.11.0-mod3

    Companion app

    No response

  • Star Trek Watchface

    Star Trek Watchface

    Description

    I made a watch face inspired by Star Trek.

    base

    It supports all the icons and values of the standard digital face.
    The status icons for Bluetooth, battery, power and notifications are on the left (the empty spot between battery and Bluetooth in the picture below is there because I could not make the small notification indicator "i" appear in InfiniSim).
    Step count is under the main clock digits in brackets. The distance between the brackets leaves enough space for the default step goal of 10,000. It breaks down at 100,000 steps, where the number reaches over the right bracket. If the heart rate measurement is enabled, it is displayed above the date section. It also supports both 12h and 24h formats.

    full

    Technical stuff

    I used the new external resources for the large number font and the small brackets.
    I include the brackets as images, because I could not be bothered to draw them as rectangles and circles, like the rest of the display, because they are so detailed. They use up less space in total than the font. I thought about saving only one and turning it to make the other, but I could not get lvgl to do this.

    The font for the large time numbers is Edge of the Galaxy, which is public domain.
    The smaller text for dates and stuff is the InfiniTime standard font.

    Testing

    I tested this on InfiniSim (thoroughly, because I had a memory leak at first [from not freeing the font in the destructor :facepalm:]) and also run it at my personal PineTime without crash so far.

    Things that could be changed

    One could change the small font to a font closer to the Star Trek displays, but since it is so tiny, I don't think it would enhance the watch face much (apart from maybe removing the dot from inside the zero).

    I am no graphics designer and therefore not good at selecting a balanced color palette. This could use some doing by someone with that skill.

    I am unsure if it is okay to call this watch face "Star Trek" in the end, because of licensing issues.

  • add auto sleep

    add auto sleep

    This PR add the option to automatically toggle on/off sleep mode during the night This should address issue https://github.com/InfiniTimeOrg/InfiniTime/issues/1440

  • Fixing build-firmware not returning error at the correct step

    Fixing build-firmware not returning error at the correct step

    If I see it correctly, I can not verify this fix, as the PR build does not use the build.sh from this PR. But from looking at it, this should fix #1292

  • PineTimeStyle weather display

    PineTimeStyle weather display

    Here is an initial draft of weather support for PineTimeStyle. It has a new button to toggle the weather display, and once enabled it displays the current temperature and an icon which can show sun, cloud, sun & cloud, sun cloud & rain or cloud & rain.

    The initial goal was to have daily minimum and maximum temperatures displayed on the watchface plus the icon, but while the min/max functions work, more investigation needs to be done about how companion apps provide weather data especially with relation to expiry times. If weather is sent to the watch with a 1h expiry time, it will be purged from the timeline after an hour and then can't be included in daily min/max temperature. I've tested using ITD which works well but currently sets the expiry time to 1 hour, and TinyWeatherForecastGermany which sets the expiry time to 24h. Using TWFG and GadgetBridge currently results in temperatures being displayed in Kelvin, this will be fixed in the next GB release. The temperature is displayed simply in degrees (not °C/°F) partly for space but also so we can display farenheit or celsius depending on what the companion app supplies without any settings required on the watch. Gadgetbridge has a setting to choose metric or imperial units which would allow it to send farenheit if desired, but this will require another small patch to GB to make it work.

    I'm opening this as a draft to get some input, one bug I haven't dealt with yet is that on boot, with no weather data available, the temperature shows 124°, precipitation 24 and clouds 155%, or some combination like that. Not critical, but I'd like to have something non numerical displayed ideally if there's no weather data available. I'm also getting an overload warning on compilation so I might have missed something in displayapp. It's not totally clear if precipitation represents a percentage chance or a quantity in mm/hr, it might depend on the weather provider. For me it seems like MM.

    The calculation I've used to set the icon seems crude and can probably be improved:

        if ((clouds <= 30) && (precip == 0)) {
          lv_label_set_text(weatherIcon, Symbols::sun);
        } else if ((clouds >= 70) && (clouds <= 90) && (precip == 1)) {
          lv_label_set_text(weatherIcon, Symbols::cloudSunRain);
        } else if ((clouds > 90) && (precip == 0)) {
          lv_label_set_text(weatherIcon, Symbols::cloud);
        } else if ((clouds > 70) && (precip >= 2)) {
          lv_label_set_text(weatherIcon, Symbols::cloudShowersHeavy);
        } else {
          lv_label_set_text(weatherIcon, Symbols::cloudSun);
        };
    

    InfiniSim_2022-11-25_194741

    The BLE icon has been moved next to the battery icon, the notification icon has been moved to the top left, and the calendar shifts down when weather is enabled to make space.

    It could maybe do with moon icon for nighttime?

Simple template project to build a firmware for the STM32F4 Discovery board with FreeRTOS and libopencm3

STM32F4 Discovery FreeRTOS Makfile This is a simple template project to build a firmware for the STM32F4 Discovery board with FreeRTOS and libopencm3

May 22, 2022
Boilerplate to create a project with: STM32 + Ethernet + micro-ROS + FreeRTOS + Arduino + PlatformIO
Boilerplate to create a project with:  STM32 + Ethernet + micro-ROS + FreeRTOS + Arduino + PlatformIO

micro_ros_stm32_template Boilerplate to create a project with: STM32 + Ethernet + micro-ROS + FreeRTOS + Arduino + PlatformIO Default config STM32F407

Aug 29, 2022
The purpose of this project is to create a modern C++17 header-only interface to the FreeRTOS kernel API

FreeRTOS-Cpp The purpose of this project is to create a modern C++17 header-only interface to the FreeRTOS kernel API. Goals of this project include:

Nov 12, 2022
This FreeRTOS example builds a simple Timer application for Linux using the ESP-IDF

Supported Targets Linux This FreeRTOS example builds a simple Timer application for Linux using the ESP-IDF. Build Source the IDF environment as usual

Apr 4, 2022
Web Server based on the Raspberry Pico using an ESP8266 with AT firmware for WiFi
Web Server based on the Raspberry Pico using an ESP8266 with AT firmware for WiFi

PicoWebServer This program runs on a Raspberry Pico RP2040 to provide a web server when connected to an Espressif ESP8266. This allows the Pico to be

Nov 27, 2022
ESP based garage opener firmware.

NOTE: The hardware is in its early development. This is meant to replace your garage opener, if you'd like to use this with your existing garage door

Nov 20, 2022
MarlinRB - 3D Printer Firmware based on Marlin 3D v2.0.9.2, for Flyingbear Reborn with MKS Robin Nano v1.2, MKS Robin Nano v1.3, MKS Robin Nano S v1.3
MarlinRB - 3D Printer Firmware based on Marlin 3D v2.0.9.2, for Flyingbear Reborn with MKS Robin Nano v1.2, MKS Robin Nano v1.3, MKS Robin Nano S v1.3

English Прошивка MarlinRB для принтера Flyingbear Reborn Работает с платами: MKS Robin Nano v1.3 (съемные драйвера, контроллер STM32F407), MKS Robin N

Nov 11, 2022
Firmware for Acorn Archimedes RP2040-based podule

Acorn Archimedes Pipe Podule firmware v0.1 5 October 2021 This repository contains firmware for the Arc Pipe Podule. (PCB design files can be found in

Oct 31, 2021
Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform.
Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform.

Marlin 3D Printer Firmware Additional documentation can be found at the Marlin Home Page. Please test this firmware and let us know if it misbehaves i

Dec 3, 2022
ESP32 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps
ESP32 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps

EMS-ESP is an open-source firmware for the Espressif ESP8266 and ESP32 microcontroller that communicates with EMS (Energy Management System) based equipment from manufacturers like Bosch, Buderus, Nefit, Junkers, Worcester and Sieger.

Nov 25, 2022
Firmware for DMR transceivers using the NXP MK22 MCU, AT1846S RF chip and HR-C6000 DMR chipset. Including the Radioddiy GD-77, Baofeng DM-1801 and Baofeng RD-5R.

OpenGD77 Firmware for DMR transceivers using the NXP MK22 MCU, AT1846S RF chip and HR-C6000 DMR chipset. This includes the Radioddiy GD-77, Radioddity

Nov 29, 2022
Firmware update for XeniumOS used on Xenium and OpenXenium modchips to provide software fixes and various improvements.
Firmware update for XeniumOS used on Xenium and OpenXenium modchips to provide software fixes and various improvements.

Firmware update for XeniumOS used on Xenium and OpenXenium modchips to provide software fixes and various improvements. About • Features • Installatio

Sep 21, 2022
Firmware, mechanical and electrical design files for the Inline Filament Diameter Estimator, Lowcost (InFiDEL).
Firmware, mechanical and electrical design files for the Inline Filament Diameter Estimator, Lowcost (InFiDEL).

Inline Filament Diameter Estimator, Lowcost (InFiDEL) Originally created by Thomas Sanladerer A cheap, yet precise filament diameter sensor, intended

Nov 29, 2022
OTA Third Party Firmware Flasher for the original Wyze Plug (WLPP1) and Wyze Bulb (WLPA19).
OTA Third Party Firmware Flasher for the original Wyze Plug (WLPP1) and Wyze Bulb (WLPA19).

Wyze Plug (and Bulb!) Flasher Use this software to install third party firmware on the original Wyze Plug (model WLPP1) and Wyze Bulb (model WLPA19) o

Nov 13, 2021
Custom firmware for Quicko and KSGER T12 soldering stations
Custom firmware for Quicko and KSGER T12 soldering stations

STM32 Soldering Station Firmware Project details Compatibility Operations guide Frequently asked questions Building Creating a .ioc file from scratch

Dec 1, 2022
Toolchain and dockerfile to build the Miyoo Custom Firmware (CFW)

Miyoo Toolchain Toolchain and dockerfile to build the Miyoo Custom Firmware (CFW) See https://github.com/TriForceX/MiyooCFW/wiki/Build-Source for more

Aug 5, 2022
Contains firmware and software used for the bead sprite printer v2 robotic system

Bead-Sprite-Printer-V2 Contains firmware and software used for the bead sprite printer v2 robotic system bead_fuser_arduino - this folder contains the

Jun 23, 2022
kianv a simple implementation of a rv32im riscv cpu and soc in verilog with firmware that runs raytracer, mandelbrot, etc.....
kianv a simple implementation of a rv32im riscv cpu and soc in verilog with firmware that runs raytracer, mandelbrot, etc.....

A very simple riscv cpu/soc one single file implementation created in my spare time! But it is full rv32im CPU :) I have wrote all from scratch to lea

Nov 27, 2022
Gamepad firmware for RP2040 microcontrollers supporting Nintendo Switch, XInput and DirectInput

GP2040 Firmware GP2040 is a gamepad firmware for the RP2040 microcontroller that provides high performance and a rich feature set across multiple plat

Nov 25, 2022