diff --git a/LED_MAPPINGS.md b/LED_MAPPINGS.md index a9e4fed..d32d64e 100644 --- a/LED_MAPPINGS.md +++ b/LED_MAPPINGS.md @@ -8,12 +8,12 @@ Based on hardware testing with Proxmark3 Easy and `LED_ORDER=PM3EASY`: | LED | Color | GPIO Pin | PWM Channel | Brightness | Effects | Physical Position | |-----|--------|----------|-------------|------------|---------|-------------------| -| A | Green | PA0 | PWM0 | ✅ 0-100% | All | 1st (leftmost) | -| B | Blue | PA2 | PWM2 | ✅ 0-100% | All | 4th (rightmost) | +| A | Green | PA0 | PWM0 | 0-100% | All | 1st (leftmost) | +| B | Red | PA2 | PWM2 | 0-100% | All | 4th (rightmost) | | C | Orange | PA9 | None | On/Off | Blink | 2nd | -| D | Red | PA8 | None | On/Off | Blink | 3rd | +| D | Red2 | PA8 | None | On/Off | Blink | 3rd | -**Physical LED order (left to right):** Green, Orange, Red, Blue +**Physical LED order (left to right):** Green, Orange, Red2, Red ### GPIO Pin Details @@ -21,9 +21,20 @@ From `include/config_gpio.h` with `LED_ORDER_PM3EASY`: ```c #define GPIO_LED_A AT91C_PIO_PA0 // Green - PWM0 capable -#define GPIO_LED_B AT91C_PIO_PA2 // Blue - PWM2 capable +#define GPIO_LED_B AT91C_PIO_PA2 // Red - PWM2 capable #define GPIO_LED_C AT91C_PIO_PA9 // Orange - GPIO only -#define GPIO_LED_D AT91C_PIO_PA8 // Red - GPIO only +#define GPIO_LED_D AT91C_PIO_PA8 // Red2 - GPIO only +``` + +### Firmware Color Defines + +From `armsrc/util.h` with `LED_ORDER_PM3EASY`: + +```c +#define LED_GREEN LED_A // PA0 - PWM capable +#define LED_RED LED_B // PA2 - PWM capable +#define LED_ORANGE LED_C // PA9 - GPIO only +#define LED_RED2 LED_D // PA8 - GPIO only ``` ### LED Bitmask Values @@ -42,10 +53,10 @@ With default LED ordering (no `LED_ORDER_PM3EASY`): | LED | Color | GPIO Pin | PWM Channel | Brightness | Effects | |-----|---------|----------|-------------|------------|---------| -| A | Orange | PA0 | PWM0 | ✅ 0-100% | All | +| A | Orange | PA0 | PWM0 | 0-100% | All | | B | Green | PA8 | None | On/Off | Blink | | C | Red | PA9 | None | On/Off | Blink | -| D | Red2 | PA2 | PWM2 | ✅ 0-100% | All | +| D | Red2 | PA2 | PWM2 | 0-100% | All | **Note:** Only LEDs on PA0 and PA2 can use PWM brightness control and PWM effects (pulse, fade) on any PM3 variant. @@ -54,19 +65,23 @@ With default LED ordering (no `LED_ORDER_PM3EASY`): ### Basic LED Control ```bash -# Green LED at 50% brightness -hw led --led a --brightness 50 +# Green LED at 50% brightness (or --led g) +hw led --led green --brightness 50 -# Blue LED at 75% brightness -hw led --led b --brightness 75 +# Red LED at 75% brightness (or --led r) +hw led --led red --brightness 75 -# Orange LED on (no brightness control) -hw led --led c --on +# Orange LED on (no brightness control, or --led o) +hw led --led orange --on -# Red LED toggle -hw led --led d --toggle +# Red2 LED toggle +hw led --led red2 --toggle # Both PWM LEDs at 30% +hw led --led green,red --brightness 30 + +# Letter names also work +hw led --led a --on hw led --led a,b --brightness 30 ``` @@ -75,24 +90,24 @@ hw led --led a,b --brightness 30 Three effects are available: **pulse**, **fade**, and **blink**. ```bash -# Pulse effect (PWM LEDs only: A, B) +# Pulse effect (PWM LEDs only: green, red) # Smoothly fades in and out -hw led --led a --pulse # 5 cycles @ 500ms default -hw led --led a,b --pulse --count 10 # 10 cycles -hw led --led a --pulse --speed 300 # Faster pulse (300ms cycle) -hw led --led b --pulse --count 0 # Infinite until button press +hw led --led green --pulse # 5 cycles @ 500ms default +hw led --led green --pulse --count 10 # 10 cycles +hw led --led green --pulse --speed 300 # Faster pulse (300ms cycle) +hw led --led red --pulse --count 0 # Infinite until button press -# Fade effect (PWM LEDs only: A, B) +# Fade effect (PWM LEDs only: green, red) # Starts at full brightness, fades to off -hw led --led a --fade # Default 500ms fade -hw led --led a,b --fade --speed 1000 # Slower 1-second fade +hw led --led green --fade # Default 500ms fade +hw led --led red --fade --speed 1000 # Slower 1-second fade -# Blink effect (ALL LEDs supported: A, B, C, D) +# Blink effect (ALL LEDs supported) # Alternates on/off -hw led --led a,b,c,d --blink # All LEDs, 5 blinks -hw led --led c,d --blink --count 20 # Non-PWM LEDs work too -hw led --led all --blink --speed 200 # Fast blink (200ms cycle) -hw led --led a --blink --count 0 # Infinite until stopped +hw led --led all --blink # All LEDs, 5 blinks +hw led --led orange,red2 --blink --count 20 # Non-PWM LEDs work too +hw led --led all --blink --speed 200 # Fast blink (200ms cycle) +hw led --led green --blink --count 0 # Infinite until stopped ``` ### Effect Parameters @@ -104,7 +119,18 @@ hw led --led a --blink --count 0 # Infinite until stopped **Note:** `--count 0` runs the effect indefinitely until interrupted by: - Pressing the button on the Proxmark3 device -- Sending any other command + +### Tune LED Visualization + +LED brightness tracks antenna voltage in real-time during tuning: + +```bash +# LF tune with green LED tracking voltage +lf tune --led + +# HF tune with red LED tracking voltage +hf tune --led +``` ### Multi-Device Identification @@ -112,13 +138,13 @@ Use brightness levels and effects to distinguish between multiple Proxmark3 devi ```bash # Device 1: Dim green -hw led --led a --brightness 20 +hw led --led green --brightness 20 -# Device 2: Bright blue -hw led --led b --brightness 100 +# Device 2: Bright red +hw led --led red --brightness 100 # Device 3: Pulsing green (easy to spot) -hw led --led a --pulse --count 0 +hw led --led green --pulse --count 0 # Device 4: Fast blinking all LEDs hw led --led all --blink --speed 200 --count 0 @@ -127,19 +153,21 @@ hw led --led all --blink --speed 200 --count 0 ## Hardware Testing Notes - Confirmed via individual LED testing on PM3 Easy hardware -- During `hw tune`: Red (D) and Blue (B) LEDs typically active +- During `hw tune`: Red (B) and Red2 (D) LEDs typically active - During flashing: Orange (C) and sometimes Green (A) visible -- LED polarity: Active-low (PWM duty cycle is inverted) +- PWM polarity: AT91 PWM with CPOL=0 outputs LOW during duty portion, so duty cycle is inverted to achieve correct brightness ## Code References -- LED definitions: [armsrc/util.h](/.pm3-test/proxmark3/armsrc/util.h) lines 45-63 -- LED macros: [include/proxmark3_arm.h](/.pm3-test/proxmark3/include/proxmark3_arm.h) lines 91-102 -- GPIO mapping: [include/config_gpio.h](/.pm3-test/proxmark3/include/config_gpio.h) lines 22-39 -- PWM functions: [armsrc/util.c](/.pm3-test/proxmark3/armsrc/util.c) lines 419-504 +- LED definitions: `armsrc/util.h` lines 45-63 +- LED macros: `include/proxmark3_arm.h` lines 91-102 +- GPIO mapping: `include/config_gpio.h` lines 22-39 +- PWM functions: `armsrc/util.c` +- LED control command: `client/src/cmdhw.c` (CmdHWLed) +- Tune LED integration: `armsrc/appmain.c` (CMD_MEASURE_ANTENNA_TUNING_HF/LF handlers) --- -**Last Updated:** 2026-01-06 +**Last Updated:** 2026-03-15 **Hardware:** Proxmark3 Easy with LED_ORDER=PM3EASY -**Effects Added:** pulse, fade, blink (v1.1) +**Features:** brightness control, pulse, fade, blink, tune LED visualization