# Proxmark3 LED Mappings Reference

## Proxmark3 Easy

Based on hardware testing with Proxmark3 Easy and `LED_ORDER=PM3EASY`:

### LED Configuration

| 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)   |
| C   | Orange | PA9      | None        | On/Off     | Blink   | 2nd               |
| D   | Red    | PA8      | None        | On/Off     | Blink   | 3rd               |

**Physical LED order (left to right):** Green, Orange, Red, Blue

### GPIO Pin Details

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_C    AT91C_PIO_PA9   // Orange - GPIO only
#define GPIO_LED_D    AT91C_PIO_PA8   // Red - GPIO only
```

### LED Bitmask Values

| LED | Bitmask (decimal) | Bitmask (hex) | Binary |
|-----|-------------------|---------------|--------|
| A   | 1                 | 0x01          | 0001   |
| B   | 2                 | 0x02          | 0010   |
| C   | 4                 | 0x04          | 0100   |
| D   | 8                 | 0x08          | 1000   |
| All | 15                | 0x0F          | 1111   |

## Standard Proxmark3 (Non-Easy)

With default LED ordering (no `LED_ORDER_PM3EASY`):

| LED | Color   | GPIO Pin | PWM Channel | Brightness | Effects |
|-----|---------|----------|-------------|------------|---------|
| 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     |

**Note:** Only LEDs on PA0 and PA2 can use PWM brightness control and PWM effects (pulse, fade) on any PM3 variant.

## Usage Examples

### Basic LED Control

```bash
# Green LED at 50% brightness
hw led --led a --brightness 50

# Blue LED at 75% brightness
hw led --led b --brightness 75

# Orange LED on (no brightness control)
hw led --led c --on

# Red LED toggle
hw led --led d --toggle

# Both PWM LEDs at 30%
hw led --led a,b --brightness 30
```

### LED Effects

Three effects are available: **pulse**, **fade**, and **blink**.

```bash
# Pulse effect (PWM LEDs only: A, B)
# 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

# Fade effect (PWM LEDs only: A, B)
# 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

# Blink effect (ALL LEDs supported: A, B, C, D)
# 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
```

### Effect Parameters

| Parameter | Description | Range | Default |
|-----------|-------------|-------|---------|
| `--speed` | Cycle time in milliseconds | 50-10000 | 500 |
| `--count` | Number of effect cycles | 0-65535 | 5 |

**Note:** `--count 0` runs the effect indefinitely until interrupted by:
- Pressing the button on the Proxmark3 device
- Sending any other command

### Multi-Device Identification

Use brightness levels and effects to distinguish between multiple Proxmark3 devices:

```bash
# Device 1: Dim green
hw led --led a --brightness 20

# Device 2: Bright blue
hw led --led b --brightness 100

# Device 3: Pulsing green (easy to spot)
hw led --led a --pulse --count 0

# Device 4: Fast blinking all LEDs
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 flashing: Orange (C) and sometimes Green (A) visible
- LED polarity: Active-low (PWM duty cycle is inverted)

## 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

---

**Last Updated:** 2026-01-06
**Hardware:** Proxmark3 Easy with LED_ORDER=PM3EASY
**Effects Added:** pulse, fade, blink (v1.1)
