mirror of
https://github.com/Ralim/IronOS.git
synced 2025-07-23 20:30:38 +02:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
dda6a82647 | ||
|
b4bb6d5488 | ||
|
580bc4f70d | ||
|
c00df49708 | ||
|
009aa10a53 | ||
|
260891b00b | ||
|
bc6d5d16d5 | ||
|
985075afdf | ||
|
1184163cde | ||
|
0813b38f61 | ||
|
0f3e03e7cf | ||
|
6b20522a8a | ||
|
8d40afcaa1 |
9
.github/workflows/push.yml
vendored
9
.github/workflows/push.yml
vendored
@@ -173,6 +173,15 @@ jobs:
|
||||
- name: Check format style with clang-format
|
||||
run: make clean check-style
|
||||
|
||||
check-settings-docs:
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Run the menu docs generator
|
||||
run: python Translations/gen_menu_docs.py
|
||||
- name: Check that Documentation/Settings.md didn't change
|
||||
run: git diff --exit-code
|
||||
|
||||
check_python:
|
||||
runs-on: ubuntu-24.04
|
||||
container:
|
||||
|
61
Documentation/DebuggingPD.md
Normal file
61
Documentation/DebuggingPD.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Debugging PD
|
||||
|
||||
When using many of these soldering irons, the recommended power source is to use a USB-PD power supply.
|
||||
|
||||
Occasionally, issues are run into where the iron reboots or appears to not boot when connected to this supply.
|
||||
|
||||
There are generally a few different reasons for this to occur, the first is of course a bug or incompatibility in the IronOS PD-stack / firmware, but there are also power adapters that either have issues or try to be _smart_ to the detriment of compatibility.
|
||||
|
||||
It also helps to remember that driving a soldering iron is not like a normal load that these power supplies are designed for. Normally a laptop or phone will gently ramp the power draw up and down. Where as the soldering iron will rapidly go from 0 to full power, and then back to 0 again. This can cause issues with some power supplies tripping out.
|
||||
|
||||
In general, a normal, boring 60-100W PD supply is recommended. Watch out for adapters with multiple ports that are used by marketing to advertise a higher number. It's somewhat common to see 65W adapters being pushed that have two ports, one of which is 45W and one that is 20W. These cannot support 65W output on one typically.
|
||||
|
||||
Smarter chargers that try to implement every known protocol can come with quirks. Often slight shortcuts are taken in the PD implementation that can cause hard to debug issues.
|
||||
|
||||
|
||||
## If the unit doesn't power up at all
|
||||
|
||||
This can be the most frustrating one to diagnose.
|
||||
|
||||
First, test the device powers up when powered by a USB-A -> USB-C cable. Or a DC power supply. This can rule out other issues that cause the device to appear off (bad flashing).
|
||||
|
||||
### No power
|
||||
If your device won't power up on any other supply type, look into if you can boot into the bootloader. This is usually done by holding down a button while connecting it to a computer and then checking if it's detected.
|
||||
|
||||
If the device shows up to a computer, but doesn't operate when powered up normally, the two most likely causes are a bad flash/firmware OR a non-functioning display.
|
||||
|
||||
Testing alternative firmware builds or trying to heat the unit (pressing the front button) can be ways to test this.
|
||||
|
||||
### Powers up on other supplies
|
||||
|
||||
If the device powers up on other supplies, but not on the USB-PD supply, it could be a problem with the USB-PD supply itself. Try using a different USB-PD supply to see if the issue persists.
|
||||
|
||||
If the unit does not power on any PD supplies it could be damage to the PD PHY or the USB connector. USB-PD uses the CC pins on the connector, which are not used for normal data so a USB-A adapter for example doesn't use these at all.
|
||||
|
||||
## If the unit powers up but keeps rebooting
|
||||
|
||||
There are two causes of this:
|
||||
1. If the reboot occurs when the unit starts to heat up, then it is the power supply being unable to supply the power requested.
|
||||
2. The unit reboots frequently even without any buttons being pressed.
|
||||
|
||||
If this is the issue that you are seeing, then the problem is that something during the PD initialisation is failing.
|
||||
|
||||
The _best_ way to resolve this is to be able to capture the USB PD traffic. This is the only way to know what is **really** going on and why the two devices can't negotiate.
|
||||
|
||||
To capture PD traffic requires a device that can capture this data. A logic analyser can be used on the CC pins, though note that the signalling voltage is < 3.3V so it will require a logic analyser that can handle this or buffering.
|
||||
|
||||
Alternatively, a lot of the higher-end USB power meter units can capture the packets. It doesn't matter if it only shows these on screen or if it can save these out to a file (ideally a file though).
|
||||
|
||||
**Without a traffic capture, all debugging is guessing**
|
||||
|
||||
On firmwares 2.23+ there is a toggle in advanced settings to change the PD mode. This will adjust how the firmware negotiates with the PD supply slightly. This can enable/disable the PPS and EPR modes (dynamic voltage negotiation).
|
||||
|
||||
PPS is known to be incorrectly implemented on some supplies, so turning off these features can improve compatibility.
|
||||
|
||||
If the device is _sometimes_ stable, you can on Pinecil devices boot while holding the front button to enter the PD debug menu. This will show what voltages & power levels are being advertised by the device. This can be used to cross-check with what is printed on the adapter. Take into consideration that non e-marked cables will be limited to 3A and that EPR requires specifically marked cables.
|
||||
|
||||
If you take the tip out of the iron, it will result in most devices not negotiating a PD profile (the irons wait to know what kind of tip is installed). This can be used to stop the failing negotiations in some situations to allow viewing this menu.
|
||||
|
||||
|
||||
Before filing a support request, please try testing other power adapters & cables to try and narrow down the possibilities of the issue being a one-off.
|
||||
If you have the capability to capture the PD traffic, that makes the problem exponentially easier to rectify.
|
@@ -26,11 +26,13 @@ It is easiest if you copy your logo file to be converted into this folder too, i
|
||||
|
||||
The image can be in color and any size, but it will be resized and converted to 1-bit color. However, it looks best if you create a 96x16 image (`png` or `bmp`) in any image editor and color the pixels black & white manually. The thresholding used for converting colour to B&W may not always work as well as one would hope.
|
||||
|
||||
The converter requires at least Python3 and Pillow apps. Follow online instructions for installing Python and Pillow on your machine. Any reasonably recent version should work well.
|
||||
The converter requires at least Python3 and Pillow apps as well as the IntelHex library for Python. Follow online instructions for installing Python, Pillow, and IntelHex on your machine. Any reasonably recent version should work well.
|
||||
|
||||
When running the script on the Windows operating system; it is recommended to use `Powershell` rather than the old `Command Prompt`.
|
||||
When running the script on the Windows operating system it is recommended to use `Powershell` rather than the old `Command Prompt`.
|
||||
|
||||
For installing pillow; you can install it via your package manager (Debian and similar distros) or via pip. To install via pip the command should be `python -m pip install pillow`.
|
||||
For installing pillow, you can install it via your package manager (Debian and similar distros) or via pip. To install via pip the command should be `python -m pip install pillow`.
|
||||
|
||||
For installing IntelHex you can use the same pip command as above but replace `pillow` with `intelhex` so that it becomes `python -m pip install intelhex`.
|
||||
|
||||
In your shell you can now execute `python img2logo.py input.png out -m ${model}` to convert the file `input.png` and create output files in the folder `out`.
|
||||
The model should be replaced by one of the following options:
|
||||
@@ -98,4 +100,4 @@ For these flash as per usual using the `.dfu` file. Afterwards power cycle and t
|
||||
|
||||
### Upload via blisp (PinecilV2)
|
||||
|
||||
For the PinecilV2 we suggest `blisp` as the command line tool to use if you are not using a GUI tool. `blsip` has been updated to accept `.dfu` files as well as the `.bin` files it historically used. As such you use the `.dfu` file for the logo and flash as per normal otherwise and it will work and reboot at the end. It should show you your new logo after flashing.
|
||||
For the PinecilV2 we suggest `blisp` as the command line tool to use if you are not using a GUI tool. `blisp` has been updated to accept `.dfu` files as well as the `.bin` files it historically used. As such you use the `.dfu` file for the logo and flash as per normal otherwise and it will work and reboot at the end. It should show you your new logo after flashing.
|
||||
|
@@ -21,13 +21,14 @@
|
||||
- [Temperature](../Documentation/Temperature.md)
|
||||
- [Startup Logo](../Documentation/Logo.md)
|
||||
- Hardware
|
||||
- [Hall Sensor (Pinecil)](../Documentation/HallSensor.md)
|
||||
- [Bluetooth (Pinecil V2)](../Documentation/Bluetooth.md)
|
||||
- [Debugging USB-PD](../Documentation/DebuggingPD.md)
|
||||
- [Hall Sensor (Pinecil)](../Documentation/HallSensor.md)
|
||||
- [Hardware Notes](../Documentation/Hardware.md)
|
||||
- [Troubleshooting](../Documentation/Troubleshooting.md)
|
||||
- [Known Hardware Issues](../Documentation/HardwareIssues.md)
|
||||
- [Power sources](../Documentation/PowerSources.md)
|
||||
- [New Hardware Requirements](../Documentation/PortingToNewDevice.md)
|
||||
- [Power sources](../Documentation/PowerSources.md)
|
||||
- [Troubleshooting](../Documentation/Troubleshooting.md)
|
||||
- [WS2812B RGB Modding (Pinecil V2)](../Documentation/WS2812BModding.md)
|
||||
- [Translations](../Documentation/Translation.md)
|
||||
- [Development](../Documentation/Development.md)
|
||||
|
@@ -43,7 +43,199 @@ When the device is powered by a battery, this adjusts the low voltage threshold
|
||||
|
||||
On device help text:
|
||||
|
||||
Set cutoff voltage to prevent battery over-drain. (DC 10V) (S=3.3V per cell, disable PWR limit)
|
||||
Set cutoff voltage to prevent battery overdischarge (DC=10V) (S=3.3V per cell, disable PWR limit)
|
||||
|
||||
### Setting: Minimum voltage
|
||||
|
||||
When powered by a battery, this adjusts the minimum voltage per cell before shutdown. (This is multiplied by the cell count.)
|
||||
|
||||
On device help text:
|
||||
|
||||
Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)
|
||||
|
||||
### Setting: QC voltage
|
||||
|
||||
This adjusts the maximum voltage the QC negotiation will adjust to. Does NOT affect USB-PD. Should be set safely based on the current rating of your power supply.
|
||||
|
||||
On device help text:
|
||||
|
||||
Max QC voltage the iron should negotiate for
|
||||
|
||||
### Setting: PD timeout
|
||||
|
||||
How long until firmware stops trying to negotiate for USB-PD and tries QC instead. Longer times may help dodgy / old PD adapters, faster times move onto PD quickly. Units of 100ms. Recommended to keep small values.
|
||||
|
||||
On device help text:
|
||||
|
||||
PD negotiation timeout in 100ms steps for compatibility with some QC chargers
|
||||
|
||||
### Setting: PD Mode
|
||||
|
||||
Adjusts how the USB-PD Logic selects the voltage. No Dynamic disables EPR & PPS protocols, Safe mode does not use padding resistance (will select a slightly lower voltage).
|
||||
|
||||
On device help text:
|
||||
|
||||
No Dynamic disables EPR & PPS, Safe mode does not use padding resistance
|
||||
|
||||
### Setting: Boost temp
|
||||
|
||||
When the unit is in soldering mode. You can hold down the button at the front of the device to temporarily override the soldering temperature to this value. This SETS the temperature, it does not ADD to it.
|
||||
|
||||
On device help text:
|
||||
|
||||
Tip temperature used in "boost mode"
|
||||
|
||||
### Setting: Start-up behavior
|
||||
|
||||
When the device powers up, should it enter into a special mode. These settings set it to either start into soldering mode, sleeping mode or auto mode (Enters into soldering mode on the first movement).
|
||||
|
||||
On device help text:
|
||||
|
||||
S=heat to soldering temp | Z=standby at sleep temp until moved | R=standby without heating until moved
|
||||
|
||||
### Setting: Temp change short
|
||||
|
||||
Factor by which the temperature is changed with a quick press of the buttons.
|
||||
|
||||
On device help text:
|
||||
|
||||
Temperature-change-increment on short button press
|
||||
|
||||
### Setting: Temp change long
|
||||
|
||||
Factor by which the temperature is changed with a hold of the buttons.
|
||||
|
||||
On device help text:
|
||||
|
||||
Temperature-change-increment on long button press
|
||||
|
||||
### Setting: Allow locking buttons
|
||||
|
||||
If locking the buttons against accidental presses is enabled.
|
||||
|
||||
On device help text:
|
||||
|
||||
While soldering, hold down both buttons to toggle locking them (B=boost mode only | F=full locking)
|
||||
|
||||
### Setting: Profile Phases
|
||||
|
||||
set the number of phases for profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
Number of phases in profile mode
|
||||
|
||||
### Setting: Preheat Temp
|
||||
|
||||
Preheat to this temperature at the start of profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
Preheat to this temperature at the start of profile mode
|
||||
|
||||
### Setting: Preheat Speed
|
||||
|
||||
How fast the temperature is allowed to rise during the preheat phase at the start of profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
Preheat at this rate (degrees per second)
|
||||
|
||||
### Setting: Phase 1 Temp
|
||||
|
||||
Target temperature for the end of phase 1 of profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
Target temperature for the end of this phase
|
||||
|
||||
### Setting: Phase 1 Duration
|
||||
|
||||
Duration of phase 1 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature.
|
||||
|
||||
On device help text:
|
||||
|
||||
Target duration of this phase (seconds)
|
||||
|
||||
### Setting: Phase 2 Temp
|
||||
|
||||
Target temperature for the end of phase 2 of profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Phase 2 Duration
|
||||
|
||||
Duration of phase 2 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Phase 3 Temp
|
||||
|
||||
Target temperature for the end of phase 3 of profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Phase 3 Duration
|
||||
|
||||
Duration of phase 3 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Phase 4 Temp
|
||||
|
||||
Target temperature for the end of phase 5 of profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Phase 4 Duration
|
||||
|
||||
Duration of phase 5 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Phase 5 Temp
|
||||
|
||||
Target temperature for the end of phase 5 of profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Phase 5 Duration
|
||||
|
||||
Duration of phase 5 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Cooldown Speed
|
||||
|
||||
How fast the temperature is allowed to drop during the cooldown phase at the end of profile mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
Cooldown at this rate at the end of profile mode (degrees per second)
|
||||
|
||||
### Setting: Motion sensitivity
|
||||
|
||||
Scale of how sensitive the device is to movement. Higher numbers == more sensitive. 0 == motion detection turned off.
|
||||
|
||||
On device help text:
|
||||
|
||||
1=least sensitive | ... | 9=most sensitive
|
||||
|
||||
### Setting: Sleep temp
|
||||
|
||||
@@ -69,13 +261,21 @@ On device help text:
|
||||
|
||||
Interval before the iron shuts down (m=minutes)
|
||||
|
||||
### Setting: Motion sensitivity
|
||||
### Setting: Hall sensor sensitivity
|
||||
|
||||
Scale of how sensitive the device is to movement. Higher numbers == more sensitive. 0 == motion detection turned off.
|
||||
If the unit has a hall effect sensor (Pinecil), this adjusts how sensitive it is at detecting a magnet to put the device into sleep mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
0=off | 1=least sensitive | ... | 9=most sensitive
|
||||
Sensitivity to magnets (1=least sensitive | ... | 9=most sensitive)
|
||||
|
||||
### Setting: HallSensor SleepTime
|
||||
|
||||
If the unit has a hall effect sensor (Pinecil), this adjusts how long the device takes before it drops down to the sleep temperature when hall sensor is over threshold.
|
||||
|
||||
On device help text:
|
||||
|
||||
Interval before "sleep mode" starts when hall effect is above threshold
|
||||
|
||||
### Setting: Temperature unit
|
||||
|
||||
@@ -83,15 +283,7 @@ If the device shows temperatures in °C or °F.
|
||||
|
||||
On device help text:
|
||||
|
||||
C=Celsius | F=Fahrenheit
|
||||
|
||||
### Setting: Detailed idle screen
|
||||
|
||||
Should the device show an 'advanced' view on the idle screen. The advanced view uses text to show more details than the typical icons.
|
||||
|
||||
On device help text:
|
||||
|
||||
Display detailed info in a smaller font on idle screen
|
||||
C=°Celsius | F=°Fahrenheit
|
||||
|
||||
### Setting: Display orientation
|
||||
|
||||
@@ -101,72 +293,13 @@ On device help text:
|
||||
|
||||
R=right-handed | L=left-handed | A=automatic
|
||||
|
||||
### Setting: Boost temp
|
||||
|
||||
When the unit is in soldering mode. You can hold down the button at the front of the device to temporarily override the soldering temperature to this value. This SETS the temperature, it does not ADD to it.
|
||||
|
||||
On device help text:
|
||||
|
||||
Tip temperature used in "boost mode"
|
||||
|
||||
### Setting: Start-up behavior
|
||||
|
||||
When the device powers up, should it enter into a special mode. These settings set it to either start into soldering mode, sleeping mode or auto mode (Enters into soldering mode on the first movement).
|
||||
|
||||
On device help text:
|
||||
|
||||
O=off | S=heat to soldering temp | Z=standby at sleep temp until moved | R=standby, heat-off until moved
|
||||
|
||||
### Setting: Cooldown flashing
|
||||
|
||||
If the idle screen should blink the tip temperature for attention while the tip is over 50°C. Intended as a 'tip is still hot' warning.
|
||||
|
||||
On device help text:
|
||||
|
||||
Flash temperature reading at idle if tip is hot
|
||||
|
||||
### Setting: Calibrate CJC at next boot
|
||||
|
||||
Note:
|
||||
If the difference between the target temperature and the measured temperature is less than 5°C, **calibration is NOT required at all**.
|
||||
|
||||
This is used to calibrate the offset between ADC and Op-amp of the tip **at next boot** (Ideally it has to be done at boot, before internal components get warm.). If the checkbox is set, the calibration will only be performed at the next boot. After a successful calibration the checkbox will be unchecked again! If you need to repeat the calibration however, you have to set the checkbox *again*, unplug your device and let it cool down to room/ambient temperature & power it up, ideally while it sits on the desk.
|
||||
|
||||
Also, the calibration will only take place if both of the following conditions are met:
|
||||
- The tip must be installed.
|
||||
- The temperature difference between tip and handle must be less than 10°C. (~ ambient / room temperature)
|
||||
|
||||
Otherwise, the calibration will be performed the next time the device is started and both conditions are met, unless the corresponding checkbox is unchecked.
|
||||
|
||||
Hence, never repeat the calibration in quick succession!
|
||||
|
||||
On device help text:
|
||||
|
||||
Calibrate tip Cold Junction Compensation at the next boot (not required if Delta T is < 5°C)
|
||||
|
||||
### Setting: Restore default settings
|
||||
|
||||
Resets all settings and calibrations to factory defaults. Does NOT erase custom user boot up logo's.
|
||||
|
||||
On device help text:
|
||||
|
||||
Reset default settings for this firmware ver.
|
||||
|
||||
### Setting: Calibrate input voltage
|
||||
|
||||
Enters an adjustment mode where you can gradually adjust the measured voltage to compensate for any unit-to-unit variance in the voltage sense resistors.
|
||||
|
||||
On device help text:
|
||||
|
||||
Start VIN calibration (long press to exit)
|
||||
|
||||
### Setting: Detailed solder screen
|
||||
|
||||
Should the device show an 'advanced' soldering view. This is a text-based view that shows more information at the cost of no nice graphics.
|
||||
|
||||
On device help text:
|
||||
|
||||
Display detailed info in a smaller font on soldering screen
|
||||
Flash temp reading at idle while tip is hot
|
||||
|
||||
### Setting: Scrolling speed
|
||||
|
||||
@@ -174,31 +307,7 @@ How fast the description text scrolls when hovering on a menu. Faster speeds may
|
||||
|
||||
On device help text:
|
||||
|
||||
Speed info text scrolls past at (S=slow | F=fast)
|
||||
|
||||
### Setting: QC voltage
|
||||
|
||||
This adjusts the maximum voltage the QC negotiation will adjust to. Does NOT affect USB-PD. Should be set safely based on the current rating of your power supply.
|
||||
|
||||
On device help text:
|
||||
|
||||
Max QC voltage the iron should negotiate for
|
||||
|
||||
### Setting: PD timeout
|
||||
|
||||
How long until firmware stops trying to negotiate for USB-PD and tries QC instead. Longer times may help dodgy / old PD adapters, faster times move onto PD quickly. Units of 100ms. Recommended to keep small values.
|
||||
|
||||
On device help text:
|
||||
|
||||
PD negotiation timeout in 100ms steps for compatibility with some QC chargers
|
||||
|
||||
### Setting: Power limit
|
||||
|
||||
Allows setting a custom wattage for the device to aim to keep the AVERAGE power below. The unit can't control its peak power no matter how you set this. (Except for MHP30 which will regulate nicely to this). If USB-PD is in use, the limit will be set to the lower of this and the supplies advertised wattage.
|
||||
|
||||
On device help text:
|
||||
|
||||
Maximum power the iron can use (W=watt)
|
||||
Scrolling speed of info text (S=slow | F=fast)
|
||||
|
||||
### Setting: Swap + - keys
|
||||
|
||||
@@ -208,53 +317,21 @@ On device help text:
|
||||
|
||||
Reverse assignment of buttons for temperature adjustment
|
||||
|
||||
### Setting: Temp change short
|
||||
### Setting: Swap A B keys
|
||||
|
||||
Factor by which the temperature is changed with a quick press of the buttons.
|
||||
Swaps which button is used as Enter/Change and as Scroll/Back in Settings menu.
|
||||
|
||||
On device help text:
|
||||
|
||||
Temperature-change-increment on short button press
|
||||
Reverse assignment of buttons for Settings menu
|
||||
|
||||
### Setting: Temp change long
|
||||
### Setting: Anim. speed
|
||||
|
||||
Factor by which the temperature is changed with a hold of the buttons.
|
||||
How fast should the menu animations loop, or if they should not loop at all.
|
||||
|
||||
On device help text:
|
||||
|
||||
Temperature-change-increment on long button press
|
||||
|
||||
### Setting: Power pulse
|
||||
|
||||
Enables and sets the wattage of the power pulse. Power pulse causes the device to briefly turn on the heater to draw power to avoid power banks going to sleep.
|
||||
|
||||
On device help text:
|
||||
|
||||
Intensity of power of keep-awake-pulse (watt)
|
||||
|
||||
### Setting: Hall sensor sensitivity
|
||||
|
||||
If the unit has a hall effect sensor (Pinecil), this adjusts how sensitive it is at detecting a magnet to put the device into sleep mode.
|
||||
|
||||
On device help text:
|
||||
|
||||
Sensitivity to magnets (0=off | 1=least sensitive | ... | 9=most sensitive)
|
||||
|
||||
### Setting: Allow locking buttons
|
||||
|
||||
If locking the buttons against accidental presses is enabled.
|
||||
|
||||
On device help text:
|
||||
|
||||
While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)
|
||||
|
||||
### Setting: Minimum voltage
|
||||
|
||||
When powered by a battery, this adjusts the minimum voltage per cell before shutdown. (This is multiplied by the cell count.)
|
||||
|
||||
On device help text:
|
||||
|
||||
Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)
|
||||
Pace of icon animations in menu (S=slow | M=medium | F=fast)
|
||||
|
||||
### Setting: Anim. loop
|
||||
|
||||
@@ -264,38 +341,6 @@ On device help text:
|
||||
|
||||
Loop icon animations in main menu
|
||||
|
||||
### Setting: Anim. speed
|
||||
|
||||
How fast should the menu animations loop, or if they should not loop at all.
|
||||
|
||||
On device help text:
|
||||
|
||||
Pace of icon animations in menu (O=off | S=slow | M=medium | F=fast)
|
||||
|
||||
### Setting: Power pulse delay
|
||||
|
||||
Adjusts the time interval between power pulses. Longer gaps reduce undesired heating of the tip, but needs to be fast enough to keep your power bank awake.
|
||||
|
||||
On device help text:
|
||||
|
||||
Delay before keep-awake-pulse is triggered (x 2.5s)
|
||||
|
||||
### Setting: Power pulse duration
|
||||
|
||||
How long should the power pulse go for. Some power banks require seeing the power draw be sustained for a certain duration to keep awake. Should be kept as short as possible to avoid wasting power / undesired heating of the tip.
|
||||
|
||||
On device help text:
|
||||
|
||||
Keep-awake-pulse duration (x 250ms)
|
||||
|
||||
### Setting: Language: EN English
|
||||
|
||||
Changes the device language on multi-lingual builds.
|
||||
|
||||
On device help text:
|
||||
|
||||
Current firmware language
|
||||
|
||||
### Setting: Screen brightness
|
||||
|
||||
Display brightness. Higher values age the OLED faster due to burn-in. (However, it is notable that most of these screens die from other causes first.)
|
||||
@@ -318,4 +363,111 @@ Sets the duration for the boot logo (s=seconds).
|
||||
|
||||
On device help text:
|
||||
|
||||
Set Boot logo duration (off | s=seconds | infinity)
|
||||
Set boot logo duration (s=seconds)
|
||||
|
||||
### Setting: Detailed idle screen
|
||||
|
||||
Should the device show an 'advanced' view on the idle screen. The advanced view uses text to show more details than the typical icons.
|
||||
|
||||
On device help text:
|
||||
|
||||
Display detailed info in a smaller font on idle screen
|
||||
|
||||
### Setting: Detailed solder screen
|
||||
|
||||
Should the device show an 'advanced' soldering view. This is a text-based view that shows more information at the cost of no nice graphics.
|
||||
|
||||
On device help text:
|
||||
|
||||
Display detailed info in a smaller font on soldering screen
|
||||
|
||||
### Setting: Bluetooth
|
||||
|
||||
Should BLE be enabled at boot time.
|
||||
|
||||
On device help text:
|
||||
|
||||
Enables BLE
|
||||
|
||||
### Setting: Power limit
|
||||
|
||||
Allows setting a custom wattage for the device to aim to keep the AVERAGE power below. The unit can't control its peak power no matter how you set this. (Except for MHP30 which will regulate nicely to this). If USB-PD is in use, the limit will be set to the lower of this and the supplies advertised wattage.
|
||||
|
||||
On device help text:
|
||||
|
||||
Average maximum power the iron can use (W=watt)
|
||||
|
||||
### Setting: Calibrate CJC at next boot
|
||||
|
||||
Note:
|
||||
If the difference between the target temperature and the measured temperature is less than 5°C, **calibration is NOT required at all**.
|
||||
|
||||
This is used to calibrate the offset between ADC and Op-amp of the tip **at next boot** (Ideally it has to be done at boot, before internal components get warm.). If the checkbox is set, the calibration will only be performed at the next boot. After a successful calibration the checkbox will be unchecked again! If you need to repeat the calibration however, you have to set the checkbox *again*, unplug your device and let it cool down to room/ambient temperature & power it up, ideally while it sits on the desk.
|
||||
|
||||
|
||||
Also, the calibration will only take place if both of the following conditions are met:
|
||||
- The tip must be installed.
|
||||
- The temperature difference between tip and handle must be less than 10°C. (~ ambient / room temperature)
|
||||
|
||||
Otherwise, the calibration will be performed the next time the device is started and both conditions are met, unless the corresponding checkbox is unchecked.
|
||||
Hence, never repeat the calibration in quick succession!
|
||||
|
||||
On device help text:
|
||||
|
||||
Calibrate Cold Junction Compensation at next boot (not required if Delta T is < 5°C)
|
||||
|
||||
### Setting: Calibrate input voltage
|
||||
|
||||
Enters an adjustment mode where you can gradually adjust the measured voltage to compensate for any unit-to-unit variance in the voltage sense resistors.
|
||||
|
||||
On device help text:
|
||||
|
||||
Start VIN calibration (long press to exit)
|
||||
|
||||
### Setting: Power pulse
|
||||
|
||||
Enables and sets the wattage of the power pulse. Power pulse causes the device to briefly turn on the heater to draw power to avoid power banks going to sleep.
|
||||
|
||||
On device help text:
|
||||
|
||||
Intensity of power of keep-awake-pulse (W=watt)
|
||||
|
||||
### Setting: Power pulse delay
|
||||
|
||||
Adjusts the time interval between power pulses. Longer gaps reduce undesired heating of the tip, but needs to be fast enough to keep your power bank awake.
|
||||
|
||||
On device help text:
|
||||
|
||||
Delay before keep-awake-pulse is triggered (x 2.5s)
|
||||
|
||||
### Setting: Power pulse duration
|
||||
|
||||
How long should the power pulse go for. Some power banks require seeing the power draw be sustained for a certain duration to keep awake. Should be kept as short as possible to avoid wasting power / undesired heating of the tip.
|
||||
|
||||
On device help text:
|
||||
|
||||
Keep-awake-pulse duration (x 250ms)
|
||||
|
||||
### Setting: Restore default settings
|
||||
|
||||
Resets all settings and calibrations to factory defaults. Does NOT erase custom user boot up logo's.
|
||||
|
||||
On device help text:
|
||||
|
||||
Reset all settings to default
|
||||
|
||||
### Setting: Language: EN English
|
||||
|
||||
Changes the device language on multi-lingual builds.
|
||||
|
||||
On device help text:
|
||||
|
||||
|
||||
|
||||
### Setting: Soldering Tip Type
|
||||
|
||||
For manually selecting the type of tip fitted
|
||||
|
||||
On device help text:
|
||||
|
||||
Select the tip type fitted
|
||||
|
@@ -15,7 +15,7 @@ _This firmware does **NOT** support the USB port while running for changing sett
|
||||
| Device | DC | QC | PD | EPR | BLE | Battery | Recommended |
|
||||
| :--------: | :-: | :-: | :-: | :-: | :-: | :-----: | :---------: |
|
||||
| MHP30 | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ |
|
||||
| Pinecil V1 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
|
||||
| Pinecil V1 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ |
|
||||
| Pinecil V2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
||||
| TS80P | ❌ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
|
||||
| TS100 | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
|
||||
|
@@ -51,7 +51,7 @@ In the menu there are a few main categories that are used to keep the list manag
|
||||
for menu in defs.get("menuGroups", {}):
|
||||
menu_id = menu.get("id", "")
|
||||
entry = translation_data.get("menuGroups", {}).get(menu_id, "")
|
||||
name = " ".join(entry.get("text2", []))
|
||||
name = " ".join(entry.get("displayText").split("\n"))
|
||||
desc = menu.get("description", "")
|
||||
section = f"""
|
||||
### Category: {name}
|
||||
@@ -80,9 +80,9 @@ This is the "on device help text".
|
||||
for menu in defs.get("menuOptions", {}):
|
||||
menu_id = menu.get("id", "")
|
||||
entry = translation_data.get("menuOptions", {}).get(menu_id, "")
|
||||
name = " ".join(entry.get("text2", []))
|
||||
name = " ".join(entry.get("displayText").split("\n"))
|
||||
desc = menu.get("description", "")
|
||||
on_device_desc = entry.get("desc", "")
|
||||
on_device_desc = entry.get("description", "")
|
||||
section = f"""
|
||||
### Setting: {name}
|
||||
|
||||
@@ -99,8 +99,8 @@ def main() -> None:
|
||||
json_dir = HERE
|
||||
print(json_dir)
|
||||
logging.info("Loading translation definitions")
|
||||
defs = load_json(TRANSLATION_DEFS_PATH)
|
||||
eng_translation = load_json(ENGLISH_TRANSLATION_PATH)
|
||||
defs = load_json(TRANSLATION_DEFS_PATH, False)
|
||||
eng_translation = load_json(ENGLISH_TRANSLATION_PATH, False)
|
||||
with open(MENU_DOCS_FILE_PATH, "w") as outputf:
|
||||
write_header(outputf)
|
||||
write_menu_categories(outputf, defs, eng_translation)
|
||||
|
@@ -276,8 +276,8 @@
|
||||
"description": "Tastenbelegung zur Temperaturänderung umkehren"
|
||||
},
|
||||
"ReverseButtonSettings": {
|
||||
"displayText": "Swap\nA B keys",
|
||||
"description": "Reverse assignment of buttons for Settings menu"
|
||||
"displayText": "A B Tasten\nvertauschen",
|
||||
"description": "Umgekehrte Belegung der Tasten für das Einstellungsmenü"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Anim.\nGeschw.",
|
||||
|
@@ -31,7 +31,7 @@
|
||||
"message": "Térmico\nFuera de control"
|
||||
},
|
||||
"WarningTipShorted": {
|
||||
"message": "¡Punta en Corto!"
|
||||
"message": "¡Punta en cortocircuito!"
|
||||
},
|
||||
"SettingsCalibrationWarning": {
|
||||
"message": "¡Antes de reiniciar, asegúrese de que la punta y el mango estén a temperatura ambiente!"
|
||||
@@ -145,11 +145,11 @@
|
||||
},
|
||||
"QCMaxVoltage": {
|
||||
"displayText": "Potencia de\nentrada",
|
||||
"description": "Potencia en Watts del adaptador de corriente utilizado"
|
||||
"description": "Potencia en vatios del adaptador de corriente utilizado"
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"displayText": "PD\ntiempo de espera",
|
||||
"description": "Timeout de negociación de PD en pasos de 100ms para compatibilidad con algunos cargadores QC (0: apagado)"
|
||||
"description": "Tiempo de espera de negociación de PD en pasos de 100ms para compatibilidad con algunos cargadores QC (0: apagado)"
|
||||
},
|
||||
"USBPDMode": {
|
||||
"displayText": "PD\nMode",
|
||||
@@ -253,7 +253,7 @@
|
||||
},
|
||||
"HallEffSleepTimeout": {
|
||||
"displayText": "Tiempo reposo\nSensor Hall",
|
||||
"description": "Intervalo antes de que \"sleep mode\" empiece cuando sensorhall supera límite"
|
||||
"description": "Intervalo antes de que \"modo resposo\" empiece cuando sensorhall supera límite"
|
||||
},
|
||||
"TemperatureUnit": {
|
||||
"displayText": "Unidad de\ntemperatura",
|
||||
@@ -276,8 +276,8 @@
|
||||
"description": "Invertir botones de ajuste de temperatura"
|
||||
},
|
||||
"ReverseButtonSettings": {
|
||||
"displayText": "Swap\nA B keys",
|
||||
"description": "Reverse assignment of buttons for Settings menu"
|
||||
"displayText": "Cambiar\nteclas A B",
|
||||
"description": "Asignación inversa de botonos para el menú de configuración"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Anim.\nvelocidad",
|
||||
@@ -313,11 +313,11 @@
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Potencia\nlímite",
|
||||
"description": "Elige el límite de potencia máxima del soldador (en Watts)"
|
||||
"description": "Elige el límite de potencia máxima del soldador (en vatios)"
|
||||
},
|
||||
"CalibrateCJC": {
|
||||
"displayText": "Calibrar CJC\nen el próximo inicio",
|
||||
"description": "Al siguinte inicio el Cold Junction Compensation sera calibrado (no requerido si el Delta T es < 5°C)"
|
||||
"description": "Al siguinte inicio la compensación de referencia será calibrada (no requerido si el Delta T es < 5°C)"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"displayText": "Calibrar voltaje\nde entrada",
|
||||
@@ -325,7 +325,7 @@
|
||||
},
|
||||
"PowerPulsePower": {
|
||||
"displayText": "Pulsos bat.\nconstantes",
|
||||
"description": "Intensidad de la potencia del pulso para mantener encendido (W=Watt)"
|
||||
"description": "Intensidad de la potencia del pulso para mantener encendido (W=Vatio)"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"displayText": "Tiempor entre\n pulso de energia",
|
||||
@@ -344,8 +344,8 @@
|
||||
"description": ""
|
||||
},
|
||||
"SolderingTipType": {
|
||||
"displayText": "Soldering\nTip Type",
|
||||
"description": "Select the tip type fitted"
|
||||
"displayText": "Tipo de\nTpunta",
|
||||
"description": "Selecciona la punta montada"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -276,8 +276,8 @@
|
||||
"description": "Inverti i tasti per aumentare o diminuire la temperatura della punta"
|
||||
},
|
||||
"ReverseButtonSettings": {
|
||||
"displayText": "Swap\nA B keys",
|
||||
"description": "Reverse assignment of buttons for Settings menu"
|
||||
"displayText": "Inversione\ntasti A/B",
|
||||
"description": "Inverti il funzionamento dei tasti del saldatore all'interno del menù principale"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Velocità\nanimazioni",
|
||||
@@ -325,15 +325,15 @@
|
||||
},
|
||||
"PowerPulsePower": {
|
||||
"displayText": "Potenza\nimpulso",
|
||||
"description": "Regola la potenza di un \"impulso sveglia\" atto a prevenire lo standby eventuale dell'alimentatore [watt]"
|
||||
"description": "Regola la potenza di un segnale di attività per prevenire lo standby eventuale dell'alimentatore [watt]"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"displayText": "Distanza\nimpulsi",
|
||||
"description": "Imposta il tempo che deve intercorrere tra due \"impulsi sveglia\" [multipli di 2,5 s]"
|
||||
"description": "Imposta il tempo che deve intercorrere tra un segnale di attività e il successivo [multipli di 2,5 s]"
|
||||
},
|
||||
"PowerPulseDuration": {
|
||||
"displayText": "Durata\nimpulso",
|
||||
"description": "Regola la durata dell'«impulso sveglia» [multipli di 250 ms]"
|
||||
"description": "Regola la durata del segnale di attività [multipli di 250 ms]"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"displayText": "Ripristino\nimpostazioni",
|
||||
|
@@ -4,7 +4,7 @@
|
||||
"tempUnitFahrenheit": false,
|
||||
"messagesWarn": {
|
||||
"CalibrationDone": {
|
||||
"message": "Calibration\ndone!"
|
||||
"message": "Kalibravimas\natliktas!"
|
||||
},
|
||||
"ResetOKMessage": {
|
||||
"message": "Atstatyta"
|
||||
@@ -37,7 +37,7 @@
|
||||
"message": "Before rebooting, make sure tip & handle are at room temperature!"
|
||||
},
|
||||
"CJCCalibrating": {
|
||||
"message": "calibrating\n"
|
||||
"message": "Kalibruojama\n"
|
||||
},
|
||||
"SettingsResetWarning": {
|
||||
"message": "Ar norite atstatyti nustatymus į numatytas reikšmes?"
|
||||
@@ -276,8 +276,8 @@
|
||||
"description": "Sukeisti + - temperatūros keitimo mygtukus vietomis"
|
||||
},
|
||||
"ReverseButtonSettings": {
|
||||
"displayText": "Swap\nA B keys",
|
||||
"description": "Reverse assignment of buttons for Settings menu"
|
||||
"displayText": "Sukeisti A B\nmygtukus?",
|
||||
"description": "Sukeisti nustatymų meniu mygtukus vietomis"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Animacijų\ngreitis",
|
||||
@@ -296,8 +296,8 @@
|
||||
"description": "Invertuoja OLED ekrano spalvas"
|
||||
},
|
||||
"LOGOTime": {
|
||||
"displayText": "Boot logo\nduration",
|
||||
"description": "Set boot logo duration (s=seconds)"
|
||||
"displayText": "Įkrovos logotipo\ntrukmė",
|
||||
"description": "Nustatykite įkrovos logotipo trukmę (s=sekundės)"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
"displayText": "Detalus lau-\nkimo ekranas",
|
||||
|
@@ -276,8 +276,8 @@
|
||||
"description": "Поменять кнопки изменения температуры"
|
||||
},
|
||||
"ReverseButtonSettings": {
|
||||
"displayText": "Swap\nA B keys",
|
||||
"description": "Reverse assignment of buttons for Settings menu"
|
||||
"displayText": "Поменять\nкнопки A/B",
|
||||
"description": "Поменять назначение кнопок A/B в меню настроек"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Скорость\nанимации",
|
||||
|
@@ -272,7 +272,7 @@
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"include": ["POW_PD"],
|
||||
"description": "No Dynamic disables EPR & PPS, Safe mode does not use padding resistance"
|
||||
"description": "Adjusts how the USB-PD Logic selects the voltage. No Dynamic disables EPR & PPS protocols, Safe mode does not use padding resistance (will select a slightly lower voltage)."
|
||||
},
|
||||
{
|
||||
"id": "BoostTemperature",
|
||||
@@ -538,7 +538,7 @@
|
||||
"id": "CalibrateCJC",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Used to calibrate the ADC+Op-amp offsets for the tip. This calibration must be performed when the tip temperature and the handle temperature are equal. Generally not required unless your device is reading more than 5°C off target."
|
||||
"description": "Note:\r\nIf the difference between the target temperature and the measured temperature is less than 5°C, **calibration is NOT required at all**.\r\n\r\nThis is used to calibrate the offset between ADC and Op-amp of the tip **at next boot** (Ideally it has to be done at boot, before internal components get warm.). If the checkbox is set, the calibration will only be performed at the next boot. After a successful calibration the checkbox will be unchecked again! If you need to repeat the calibration however, you have to set the checkbox *again*, unplug your device and let it cool down to room/ambient temperature & power it up, ideally while it sits on the desk.\r\n\r\n\r\nAlso, the calibration will only take place if both of the following conditions are met:\r\n- The tip must be installed.\r\n- The temperature difference between tip and handle must be less than 10°C. (~ ambient / room temperature)\r\n\r\nOtherwise, the calibration will be performed the next time the device is started and both conditions are met, unless the corresponding checkbox is unchecked.\r\nHence, never repeat the calibration in quick succession!"
|
||||
},
|
||||
{
|
||||
"id": "VoltageCalibration",
|
||||
|
@@ -35,13 +35,14 @@ nav:
|
||||
- Temperature: Temperature.md
|
||||
- Startup Logo: Logo.md
|
||||
- Hardware:
|
||||
- Hall Sensor (Pinecil): HallSensor.md
|
||||
- Bluetooth (Pinecil V2): Bluetooth.md
|
||||
- Debugging USB-PD: DebuggingPD.md
|
||||
- Hall Sensor (Pinecil): HallSensor.md
|
||||
- Hardware Notes: Hardware.md
|
||||
- Troubleshooting: Troubleshooting.md
|
||||
- Known Hardware Issues: HardwareIssues.md
|
||||
- Power sources: PowerSources.md
|
||||
- New Hardware Requirements: PortingToNewDevice.md
|
||||
- Power sources: PowerSources.md
|
||||
- Troubleshooting: Troubleshooting.md
|
||||
- WS2812B RGB Modding (Pinecil V2): WS2812BModding.md
|
||||
- Translations: Translation.md
|
||||
- Development: Development.md
|
||||
|
@@ -1,19 +1,21 @@
|
||||
#!/bin/bash
|
||||
# TS100 Flasher for Linux by Alex Wigen (https://github.com/awigen)
|
||||
# Jan 2021 - Update by Ysard (https://github.com/ysard)
|
||||
# Jul 2025 - Update by Karakurt
|
||||
|
||||
DIR_TMP="/tmp/ts100"
|
||||
DIR_TMP="/tmp/ironos"
|
||||
HEX_FIRMWARE="$DIR_TMP/ts100.hex"
|
||||
MAX_TRIES=5
|
||||
|
||||
usage() {
|
||||
echo
|
||||
echo "#################"
|
||||
echo "# TS100 Flasher #"
|
||||
echo "#################"
|
||||
echo "#######################"
|
||||
echo "# TS100/TS101 Flasher #"
|
||||
echo "#######################"
|
||||
echo
|
||||
echo " Usage: $0 <HEXFILE>"
|
||||
echo
|
||||
echo "This script has been tested to work on Fedora."
|
||||
echo "This script has been tested to work on Fedora and Arch Linux."
|
||||
echo "If you experience any issues please open a ticket at:"
|
||||
echo "https://github.com/Ralim/IronOS/issues/new"
|
||||
echo
|
||||
@@ -44,12 +46,12 @@ is_attached() {
|
||||
}
|
||||
|
||||
instructions="not printed"
|
||||
wait_for_ts100() {
|
||||
wait_for_iron() {
|
||||
while ! is_attached; do
|
||||
if [ "$instructions" = "not printed" ]; then
|
||||
echo
|
||||
echo "#####################################################"
|
||||
echo "# Waiting for TS100 config disk device to appear #"
|
||||
echo "# Waiting for config disk device to appear #"
|
||||
echo "# #"
|
||||
echo "# Connect the soldering iron with a USB cable while #"
|
||||
echo "# holding the button closest to the tip pressed #"
|
||||
@@ -61,7 +63,7 @@ wait_for_ts100() {
|
||||
done
|
||||
}
|
||||
|
||||
mount_ts100() {
|
||||
mount_iron() {
|
||||
mkdir -p "$DIR_TMP"
|
||||
user="${UID:-$(id -u)}"
|
||||
if ! sudo mount -t msdos -o uid=$user "$DEVICE" "$DIR_TMP"; then
|
||||
@@ -70,11 +72,12 @@ mount_ts100() {
|
||||
fi
|
||||
}
|
||||
|
||||
umount_ts100() {
|
||||
umount_iron() {
|
||||
if ! (mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"); then
|
||||
echo "Failed to unmount $DIR_TMP"
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
sudo rmdir "$DIR_TMP"
|
||||
}
|
||||
|
||||
@@ -84,19 +87,22 @@ check_flash() {
|
||||
if [ -f "$RDY_FIRMWARE" ]; then
|
||||
echo -e "\e[92mFlash is done\e[0m"
|
||||
echo "Disconnect the USB and power up the iron. You're good to go."
|
||||
return 0
|
||||
elif [ -f "$ERR_FIRMWARE" ]; then
|
||||
echo -e "\e[91mFlash error; Please retry!\e[0m"
|
||||
return 1
|
||||
else
|
||||
echo -e "\e[91mUNKNOWN error\e[0m"
|
||||
echo "Flash result: "
|
||||
ls "$DIR_TMP"/ts100*
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
enable_gautomount
|
||||
if [ -d "$DIR_TMP" ]; then
|
||||
umount_ts100
|
||||
umount_iron
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT
|
||||
@@ -121,19 +127,28 @@ fi
|
||||
|
||||
disable_gautomount
|
||||
|
||||
wait_for_ts100
|
||||
echo "Found TS100 config disk device on $DEVICE"
|
||||
TRIES=0
|
||||
while [ $TRIES -lt $MAX_TRIES ]; do
|
||||
wait_for_iron
|
||||
NAME=$(sudo fatlabel "$DEVICE" 2>/dev/null)
|
||||
echo "Found $NAME config disk device on $DEVICE"
|
||||
|
||||
mount_ts100
|
||||
echo "Mounted config disk drive, flashing..."
|
||||
dd if="$1" of="$HEX_FIRMWARE" oflag=direct
|
||||
umount_ts100
|
||||
mount_iron
|
||||
echo "Mounted config disk drive, flashing..."
|
||||
dd if="$1" of="$HEX_FIRMWARE" oflag=direct
|
||||
umount_iron
|
||||
|
||||
echo "Waiting for TS100 to flash"
|
||||
sleep 5
|
||||
echo "Waiting for $NAME to flash"
|
||||
sleep 5
|
||||
|
||||
echo "Remounting config disk drive"
|
||||
wait_for_ts100
|
||||
mount_ts100
|
||||
check_flash
|
||||
echo "Remounting config disk drive"
|
||||
wait_for_iron
|
||||
mount_iron
|
||||
check_flash && exit 0
|
||||
|
||||
echo "Retrying automatically..."
|
||||
TRIES=$((TRIES + 1))
|
||||
done
|
||||
echo -e "\e[91mMax retries reached.\e[0m"
|
||||
exit 1
|
||||
|
@@ -135,8 +135,9 @@ bool parseCapabilitiesArray(const uint8_t numCaps, uint8_t *bestIndex, uint16_t
|
||||
*bestVoltage = 5000; // Default 5V
|
||||
|
||||
// Fudge of 0.5 ohms to round up a little to account for us always having off periods in PWM
|
||||
uint8_t tipResistance = getTipResistanceX10();
|
||||
if (getSettingValue(SettingsOptions::USBPDMode) == usbpdMode_t::DEFAULT) {
|
||||
uint8_t tipResistance = getTipResistanceX10();
|
||||
usbpdMode_t pd_mode = (usbpdMode_t)getSettingValue(SettingsOptions::USBPDMode);
|
||||
if (pd_mode == usbpdMode_t::DEFAULT) {
|
||||
tipResistance += 5;
|
||||
}
|
||||
#ifdef MODEL_HAS_DCDC
|
||||
@@ -156,21 +157,23 @@ bool parseCapabilitiesArray(const uint8_t numCaps, uint8_t *bestIndex, uint16_t
|
||||
int min_resistance_ohmsx10 = voltage_mv / current_a_x100;
|
||||
if (voltage_mv > 0) {
|
||||
if (voltage_mv <= (USB_PD_VMAX * 1000)) {
|
||||
if (min_resistance_ohmsx10 <= tipResistance) {
|
||||
// This is a valid power source we can select as
|
||||
if (voltage_mv > *bestVoltage) {
|
||||
if (voltage_mv <= 20000 || (pd_mode != usbpdMode_t::NO_DYNAMIC)) {
|
||||
if (min_resistance_ohmsx10 <= tipResistance) {
|
||||
// This is a valid power source we can select as
|
||||
if (voltage_mv > *bestVoltage) {
|
||||
|
||||
// Higher voltage and valid, select this instead
|
||||
*bestIndex = i;
|
||||
*bestVoltage = voltage_mv;
|
||||
*bestCurrent = current_a_x100;
|
||||
*bestIsPPS = false;
|
||||
*bestIsAVS = false;
|
||||
// Higher voltage and valid, select this instead
|
||||
*bestIndex = i;
|
||||
*bestVoltage = voltage_mv;
|
||||
*bestCurrent = current_a_x100;
|
||||
*bestIsPPS = false;
|
||||
*bestIsAVS = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if ((lastCapabilities[i] & PD_PDO_TYPE) == PD_PDO_TYPE_AUGMENTED && getSettingValue(SettingsOptions::USBPDMode)) {
|
||||
} else if (((lastCapabilities[i] & PD_PDO_TYPE) == PD_PDO_TYPE_AUGMENTED) && (pd_mode != usbpdMode_t::NO_DYNAMIC)) {
|
||||
bool sourceIsEPRCapable = lastCapabilities[0] & PD_PDO_SRC_FIXED_EPR_CAPABLE;
|
||||
bool isPPS = false;
|
||||
bool isAVS = false;
|
||||
@@ -210,6 +213,7 @@ bool parseCapabilitiesArray(const uint8_t numCaps, uint8_t *bestIndex, uint16_t
|
||||
else if (isAVS) {
|
||||
uint16_t max_voltage = PD_PAV2MV(PD_APDO_AVS_MAX_VOLTAGE_GET(lastCapabilities[i]));
|
||||
uint8_t max_wattage = PD_APDO_AVS_MAX_POWER_GET(lastCapabilities[i]);
|
||||
tipResistance = getTipResistanceX10(); // Dont use fudge factor for EPR
|
||||
|
||||
// W = v^2/tip_resistance => Wattage*tip_resistance == Max_voltage^2
|
||||
auto ideal_max_voltage = sqrtI((max_wattage * tipResistance) / 10) * 1000;
|
||||
|
Submodule source/Core/Drivers/usb-pd updated: 609dda7d16...53d12057fb
@@ -33,6 +33,7 @@ OperatingMode handleSolderingButtons(const ButtonState buttons, guiContext *cxt)
|
||||
switch (buttons) {
|
||||
case BUTTON_NONE:
|
||||
cxt->scratch_state.state1 = 3;
|
||||
cxt->scratch_state.state2 = 0;
|
||||
break;
|
||||
case BUTTON_F_LONG:
|
||||
if (getSettingValue(SettingsOptions::BoostTemp) && (getSettingValue(SettingsOptions::LockingMode) == lockingMode_t::BOOST)) {
|
||||
|
@@ -557,14 +557,14 @@ Core/Gen/Translation.%.cpp $(OUTPUT_DIR)/Core/Gen/translation.files/%.pickle: ..
|
||||
@test -d $(OUTPUT_DIR)/Core/Gen/translation.files || mkdir -p $(OUTPUT_DIR)/Core/Gen/translation.files
|
||||
@echo 'Generating translations for language $*'
|
||||
@$(HOST_PYTHON) ../Translations/make_translation.py \
|
||||
--macros $(CURDIR)/Core/Gen/macros.txt \
|
||||
-o $(CURDIR)/Core/Gen/Translation.$*.cpp \
|
||||
--output-pickled $(OUTPUT_DIR)/Core/Gen/translation.files/$*.pickle \
|
||||
--macros "$(CURDIR)/Core/Gen/macros.txt" \
|
||||
-o "$(CURDIR)/Core/Gen/Translation.$*.cpp" \
|
||||
--output-pickled "$(OUTPUT_DIR)/Core/Gen/translation.files/$*.pickle" \
|
||||
$*
|
||||
|
||||
Core/Gen/macros.txt: Makefile
|
||||
@test -d $(CURDIR)/Core/Gen || mkdir -p $(CURDIR)/Core/Gen
|
||||
echo "#include <configuration.h>" | $(CC) -dM -E $(CFLAGS) -MF $(CURDIR)/Core/Gen/macros.tmp - > $(CURDIR)/Core/Gen/macros.txt
|
||||
@test -d "$(CURDIR)/Core/Gen" || mkdir -p "$(CURDIR)/Core/Gen"
|
||||
echo "#include <configuration.h>" | $(CC) -dM -E $(CFLAGS) -MF "$(CURDIR)/Core/Gen/macros.tmp" - > "$(CURDIR)/Core/Gen/macros.txt"
|
||||
|
||||
# The recipes to produce compressed translation data
|
||||
|
||||
@@ -587,10 +587,10 @@ Core/Gen/Translation_brieflz.%.cpp: $(OUTPUT_DIR)/Core/Gen/translation.files/%.o
|
||||
@test -d $(@D) || mkdir -p $(@D)
|
||||
@echo Generating BriefLZ compressed translation for $*
|
||||
@OBJCOPY=$(OBJCOPY) $(HOST_PYTHON) ../Translations/make_translation.py \
|
||||
--macros $(CURDIR)/Core/Gen/macros.txt \
|
||||
-o $(CURDIR)/Core/Gen/Translation_brieflz.$*.cpp \
|
||||
--input-pickled $(OUTPUT_DIR)/Core/Gen/translation.files/$*.pickle \
|
||||
--strings-obj $(OUTPUT_DIR)/Core/Gen/translation.files/$*.o \
|
||||
--macros "$(CURDIR)/Core/Gen/macros.txt" \
|
||||
-o "$(CURDIR)/Core/Gen/Translation_brieflz.$*.cpp" \
|
||||
--input-pickled "$(OUTPUT_DIR)/Core/Gen/translation.files/$*.pickle" \
|
||||
--strings-obj "$(OUTPUT_DIR)/Core/Gen/translation.files/$*.o" \
|
||||
$*
|
||||
|
||||
Core/Gen/Translation_brieflz_font.%.cpp: $(OUTPUT_DIR)/Core/Gen/translation.files/%.pickle $(HOST_OUTPUT_DIR)/brieflz/libbrieflz.so Core/Gen/macros.txt
|
||||
@@ -642,9 +642,9 @@ Core/Gen/Translation_multi.$(1).cpp: $(patsubst %,../Translations/translation_%.
|
||||
@test -d $(OUTPUT_DIR)/Core/Gen/translation.files || mkdir -p $(OUTPUT_DIR)/Core/Gen/translation.files
|
||||
@echo 'Generating translations for multi-language $(2)'
|
||||
@$(HOST_PYTHON) ../Translations/make_translation.py \
|
||||
--macros $(CURDIR)/Core/Gen/macros.txt \
|
||||
-o $(CURDIR)/Core/Gen/Translation_multi.$(1).cpp \
|
||||
--output-pickled $(OUTPUT_DIR)/Core/Gen/translation.files/multi.$(1).pickle \
|
||||
--macros "$(CURDIR)/Core/Gen/macros.txt" \
|
||||
-o "$(CURDIR)/Core/Gen/Translation_multi.$(1).cpp" \
|
||||
--output-pickled "$(OUTPUT_DIR)/Core/Gen/translation.files/multi.$(1).pickle" \
|
||||
$(3)
|
||||
|
||||
$(OUTPUT_DIR)/Core/Gen/translation.files/multi.$(1).pickle: Core/Gen/Translation_multi.$(1).cpp
|
||||
@@ -653,10 +653,10 @@ Core/Gen/Translation_brieflz_multi.$(1).cpp: $(OUTPUT_DIR)/Core/Gen/translation.
|
||||
@test -d $$(@D) || mkdir -p $$(@D)
|
||||
@echo Generating BriefLZ compressed translation for multi-language $(2)
|
||||
@OBJCOPY=$(OBJCOPY) $(HOST_PYTHON) ../Translations/make_translation.py \
|
||||
--macros $(CURDIR)/Core/Gen/macros.txt \
|
||||
-o $(CURDIR)/Core/Gen/Translation_brieflz_multi.$(1).cpp \
|
||||
--input-pickled $(OUTPUT_DIR)/Core/Gen/translation.files/multi.$(1).pickle \
|
||||
--strings-obj $(OUTPUT_DIR)/Core/Gen/translation.files/multi.$(1).o \
|
||||
--macros "$(CURDIR)/Core/Gen/macros.txt" \
|
||||
-o "$(CURDIR)/Core/Gen/Translation_brieflz_multi.$(1).cpp" \
|
||||
--input-pickled "$(OUTPUT_DIR)/Core/Gen/translation.files/multi.$(1).pickle" \
|
||||
--strings-obj "$(OUTPUT_DIR)/Core/Gen/translation.files/multi.$(1).o" \
|
||||
--compress-font \
|
||||
$(3)
|
||||
|
||||
|
Reference in New Issue
Block a user