* Testing clang-format style check using github CI
* github/push: implement check-style for clang-format as a separate build step
* github/push: add missing packages for check-style/clang-format build step
* source/Makefile: check-style - reduce files of interest; update .clang-format to keep enums init
* source/Makefile: empty lines, spaces & tabs refactoring to unify style - part 1 out of N
* source/Makefile: fix formatting for multi-line variables
* source/Makefile: update formatting for multi-line variables
* source/Makefile: remove spaces on vars assignments to unify style
* source/Makefile: remove unused target style
* source/Makefile: implement exclude vars for clang-format related files
* source/Makefile: exclude configuration.h from clang-format check
* Dockerfile: add diffutils in a container to make check-style target using advanced version of diff to get more advanced output to parse & navigate log more easily
* source/Makefile: implement parser for clang-format inside check-style target to make output compatible with gcc-like error compilation format for compatibility with IDEs/editors for easy navigation over files to fix style errors
* source/Makefile: probably final touches on unifying style
* source/Makefile: implement check-style-list target to only list affected file names with wrong code style for debug purposes
* source/Makefile: fix missed spaces
* deploy.sh: add helper routine to deal with clang-format error output logging from makefile
* gitignore: add clang-format log explicitly
* Refactoring for clang-format compiance
* Dockerfile: add sed
* Dockerfile: false alarm - remove sed since busybox-sed seems fine
* source/Makefile: reduce calls of clang-format & make error log more clean, clear, and tidy
* deploy.sh:check_style() - add removal of DOS EOLs for generated log
* source/Makefile:check-style: add more empty lines between blocks with errors for readability when suggestion is too long & heavy
* source/Makefile: add STOP var to check-style for exit on first failed file
* source/Makefile: check-style: make log looks more like traditional diff/patch output
* source/Core/BSP/Pinecilv2/MemMang/heap_5.c: clang-format refactoring using reasonable advises ... and then disable it in Makefile from scanning by clang-format
* Return headers include order
* clang-format config: disable warnings about non-alphabetic include order
* clang-format refactoring
* clang-format refactoring, part 2
* clang-format refactoring, part 3
* settingsGUI.cpp: refactoring, part 1
* settingsGUI.cpp: refactoring, part 2
* settingsGUI.cpp: refactoring, part 3
* settingsGUI.cpp: refactoring, part 4
* clang-format should be happy now
* workflows/push: put readme check into separate build step & update style
* clang-format: giving SortIncludes option second chance by tweaking a couple of headers a bit
* source/Makefile: check-style: add homebrew parser to check for { } in conditional blocks
* homebrew-format: add { } for if/else, while, and for & unify some comments style; left two errors intentionally to debug & improve parser
* source/Makefile: homebrew-format: fix false negative trigger for multi-line condition in if-s
* Sleep.cpp: unify style & comments
* source/Makefile: remove unused debug target
IronOS - Flexible Soldering iron control Firmware
This repository was formerly known as TS100, it's the same great code. Just with more supported devices.
Originally conceived as an alternative firmware for the TS100, this firmware has evolved into a complex soldering iron control firmware.
The firmware implements all of the standard features of a 'smart' soldering iron, with lots of little extras and tweaks. I highly recommend reading the installation guide fully when installing on your iron. And after install just explore the settings menu.
For soldering irons that are designed to be powered by 'smart' power sources (PD and QC), the firmware supports settings around the negotiated power and voltage. For soldering irons that are designed to be powered by batteries (TS100 & Pinecil), settings for a cutoff voltage for battery protection are supported.
Currently 31 languages are supported. When downloading the firmware for your soldering iron, take note of the language code in the file name.
This project is considered feature complete for use as a soldering iron, so please suggest any feature improvements you would like!
This firmware does NOT support the USB port while running for changing settings. This is done through the onscreen menu only. Logos are edited on a computer and flashed like firmware.
| Device | DC | QC | PD | EPR | BLE | Tip Sense | Recommended Purchase | Notes |
|---|---|---|---|---|---|---|---|---|
| Miniware MHP30 | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ✔️ | |
| Pinecil V1 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ * | |
| Pinecil V2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Miniware TS101 | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | Full OLED resolution not yet supported. |
| Sequre S60 | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ | Full OLED resolution not yet supported. |
| Miniware TS80P | ❌ | ✔️ | ✔️ | ❌ | ❌ | N/A | ✔️ | |
| Miniware TS100 | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌** | |
| Miniware TS80 | ❌ | ✔️ | ❌ | ❌ | ❌ | N/A | ❌*** |
Tip Sense refers to the device being able to choose between the 'usual' TS100 or Hakko T12 style tips and Pine64's custom shorter tips which have lower resistance and allow for more power. This is N/A for TS80/TS80P as there is only one model of tip for them.
Recommended Purchase is only referring to if you are buying a new device. Of course all the devices listed are supported and will work excellently for years to come.
The TS101 and S60 feature a higher resolution OLED than other devices. Work is ongoing to support this fully, for now a cropped view is usable.
*PinecilV1 stopped being manufactured a long time ago now, all models for sale online are generally clones (or old stock). Vendors are trying to sell these for more than Pine64 sells the V2 for now. Thus the V1 is no longer recommended.
**Please note that Miniware started shipping TS100's using cloned STM32 Chips. While these do work with IronOS, their DFU bootloader works terribly, and it is hard to get it to successfully flash larger firmware images like IronOS without timing out. This is the main reason why the TS100 is no longer recommended.
***TS80 is replaced by TS80P. Production ramped down a long time ago and it's just existing stock clearing the system. It's marked not recommended being optimistic that people might pause and buy the far superior TS80P instead. This is the main reason why the TS80 is no longer recommended.
Getting Started
To get started with IronOS firmware, please jump to Getting Started Guide. But the TL;DR is to press the button near the front of the iron to heat up. Use the button near the back of the iron to enter the settings menu. Long hold the rear button in soldering mode to exit back to the start screen.
Installation
For notes on installation for your device, please refer to the flashing guide for your device:
Key Features
- PID style iron temperature control
- Automatic sleep with selectable sensitivity
- Motion wake support
- All settings exposed in the intuitive menu
- (TS100) Set a voltage lower limit for Lithium batteries so you don't kill your battery pack
- (TS80) Set 18 W or 24 W settings for your power bank
- (TS80P) Automatically negotiates appropriate PD and falls back to QC mode like TS80
- (Pinecil) Supports all 3 power modes (PD, QC, DC In).
- (Pinecilv2) Supports USB-PD EPR for 28V operation.
- Improved readability Fonts, supporting multiple languages
- Use hardware features to improve reliability
- Can disable movement detection if desired
- Boost mode lets you temporarily change the temperature when soldering (i.e. raise the temperature for short periods)
- (TS100/Pinecil) Battery charge level indicator if power source set to a lipo cell count
- (TS80/TS80P/Pinecil) Power bank operating voltage is displayed
- Custom boot up logo support1
- Automatic LCD rotation based on the orientation
Menu System
This new firmware uses a new menu system to allow access to the settings on the device. When on the main screen and having the tip plugged in, the unit shows a pair of prompts for the two most common operations.
- Pressing the button near the tip enters the soldering mode
- Pressing the button near the USB end enters the settings menu
- When not in soldering mode, holding down the button near the tip will enter soldering temperature adjust mode (This is the same as the one in the soldering mode, but allows to adjust the temperature before heating up), in soldering mode however this will activate boost mode as long as you hold down the button.
- Holding down the button near the USB end will show the debug menu. In soldering mode this ends the heating.
Operation details are over in the Menu information.
Translations
Is your preferred language missing localisation of some of the text?
Translations are stored as json files in the Translations folder.
PR's are loved and accepted to enhance the firmware.
Thanks
If you love this firmware and want to continue my caffeine addiction, you can do so here (or email me for other options). I also want to give a shout out to all of the Fantastic Contributors.
Especially to the following users, who have helped in various ways that are massively appreciated:
- Dhiltonp
- Mrkvozrout
- JonnieZG
- Federck
- Jvitkauskas
- Doegox
- Perillamint
- GeminiServer
- Patrick Horlebein
- Firebie
- Agatti
- Discip
- Paul Fertser
Plus the huge number of people who have contributed translations, your effort is massively appreciated.
Licence
The code created by the community is GNU GPLv3. Unless noted elsewhere. Other components such as FreeRTOS/USB-PD have their own licence.
Commercial Use
This software is provided as-is, so I cannot provide any commercial support for the firmware. However, you are more than welcome to distribute links to the firmware or provide irons with this software on them. Please do not re-host the files, but rather link to this page, so that there are no old versions of the firmware scattered around.
-
BOOTUP LOGO NOTICE: IronOS supports both a bootup logo AND bootup animations. However, they are no longer included in this repo. Please, read the docs for more information. ↩︎