| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491 |
- menu "Airplay ESP Configuration"
- # Board configuration is now in components/boards/Kconfig.projbuild
-
- menu "LED Configuration"
- config LED_STATUS_BRIGHTNESS
- int "Status LED brightness (0-100% duty for the on phase)"
- range 0 255
- default 60
- help
- Brightness level for the status LED (0=off, 255=max).
- config LED_STATUS_INVERT
- bool "Invert Status LED output (active-low)"
- default y
- help
- If enabled, the status LED output is inverted (active-low).
- Use this if your LED is connected with inverted logic
- (e.g., LED cathode to GPIO instead of anode).
- config LED_ERROR_INVERT
- bool "Invert Error LED output (active-low)"
- default y
- help
- If enabled, the error LED output is inverted (active-low).
- Use this if your LED is connected with inverted logic
- (e.g., LED cathode to GPIO instead of anode).
- menu "Status LED Behavior"
- choice LED_STATUS_ON_PLAYING
- prompt "Status LED when playing"
- default LED_STATUS_PLAYING_STEADY
- config LED_STATUS_PLAYING_STEADY
- bool "Steady"
- config LED_STATUS_PLAYING_BLINK_FAST
- bool "Blink fast"
- config LED_STATUS_PLAYING_VU
- bool "VU meter"
- endchoice
- choice LED_STATUS_ON_PAUSED
- prompt "Status LED when paused"
- default LED_STATUS_PAUSED_BLINK_MEDIUM
- config LED_STATUS_PAUSED_OFF
- bool "Off"
- config LED_STATUS_PAUSED_STEADY
- bool "Steady"
- config LED_STATUS_PAUSED_BLINK_SLOW
- bool "Blink slow"
- config LED_STATUS_PAUSED_BLINK_MEDIUM
- bool "Blink medium"
- endchoice
- choice LED_STATUS_ON_STANDBY
- prompt "Status LED when standby"
- default LED_STATUS_STANDBY_BLINK_SLOW
- config LED_STATUS_STANDBY_OFF
- bool "Off"
- config LED_STATUS_STANDBY_BLINK_SLOW
- bool "Blink slow"
- config LED_STATUS_STANDBY_BLINK_MEDIUM
- bool "Blink medium"
- endchoice
- endmenu
- menu "RGB LED Behavior"
- choice LED_RGB_ON_PLAYING
- prompt "RGB LED when playing"
- default LED_RGB_PLAYING_VU
- config LED_RGB_PLAYING_OFF
- bool "Off"
- config LED_RGB_PLAYING_STEADY
- bool "Steady color"
- config LED_RGB_PLAYING_VU
- bool "VU meter"
- endchoice
- choice LED_RGB_ON_PAUSED
- prompt "RGB LED when paused"
- default LED_RGB_PAUSED_STEADY
- config LED_RGB_PAUSED_OFF
- bool "Off"
- config LED_RGB_PAUSED_STEADY
- bool "Steady color"
- endchoice
- choice LED_RGB_ON_STANDBY
- prompt "RGB LED when standby"
- default LED_RGB_STANDBY_OFF
- config LED_RGB_STANDBY_OFF
- bool "Off"
- config LED_RGB_STANDBY_STEADY
- bool "Steady color"
- endchoice
- config LED_RGB_COLOR_PAUSED
- hex "RGB color when paused (hex)"
- default 0x000033
- help
- RGB color in hex (0xRRGGBB) for paused state.
- config LED_RGB_COLOR_STANDBY
- hex "RGB color when standby (hex)"
- default 0x001100
- help
- RGB color in hex (0xRRGGBB) for standby state.
- endmenu
- endmenu
- menu "WiFi Configuration"
- config DEFAULT_AP_SSID
- string "Access Point SSID"
- default "ESP32-AirPlay-Setup"
- help
- SSID (network name) the ESP32 will broadcast.
- config DEFAULT_AP_PASSWORD
- string "Access Point Password"
- default ""
- help
- Password used for the Access Point. Leave empty and set AUTH MODE to WIFI_AUTH_OPEN for no password.
- config DEFAULT_AP_CHANNEL
- int "Access Point WiFi Channel"
- default 1
- help
- Be careful you might not see the access point if you use a channel not allowed in your country.
- endmenu
- menu "Audio Output"
- choice AUDIO_OUTPUT_TYPE
- prompt "Audio output type"
- default AUDIO_OUTPUT_I2S
- help
- Select the audio output backend.
- config AUDIO_OUTPUT_I2S
- bool "I2S (standard DAC)"
- config AUDIO_OUTPUT_SPDIF
- bool "SPDIF (bit-banged via I2S)"
- config AUDIO_OUTPUT_USB
- bool "USB Audio Class (UAC)"
- depends on IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32P4
- help
- Output audio over USB as a UAC device.
- The ESP32 appears as a USB audio source to the connected host
- (e.g. a USB amplifier or a PC for testing with Audacity).
- Requires a chip with USB OTG support.
- The USB stream defaults to 48 kHz and must match the UAC
- sample-rate setting. AirPlay audio is resampled automatically
- when needed.
- endchoice
- choice OUTPUT_SAMPLE_RATE
- prompt "Output sample rate"
- default OUTPUT_SAMPLE_RATE_44100
- depends on !DAC_TAS57XX && !DAC_TAS58XX && !AUDIO_OUTPUT_USB
- help
- Sample rate for I2S/SPDIF output. If the AirPlay source sends a
- different rate, the audio is resampled automatically.
- config OUTPUT_SAMPLE_RATE_44100
- bool "44100 Hz (native AirPlay, no resampling)"
- config OUTPUT_SAMPLE_RATE_48000
- bool "48000 Hz (resampled from 44100)"
- endchoice
- config OUTPUT_SAMPLE_RATE_HZ
- int
- default 48000 if AUDIO_OUTPUT_USB
- default 48000 if OUTPUT_SAMPLE_RATE_48000
- default 44100
- config RESAMPLER_TAPS
- int "Resampler filter taps (quality)" if OUTPUT_SAMPLE_RATE_48000
- range 4 64
- default 28 if IDF_TARGET_ESP32S3
- default 12 if IDF_TARGET_ESP32
- default 16
- help
- Number of taps for the sinc resampler filters.
- More taps = better quality but higher CPU cost.
- Must be a multiple of 4.
- ESP32-S3 (hardware FPU): 28 recommended.
- ESP32 (no FPU): 12 recommended.
- endmenu
- menu "Bluetooth Configuration"
- depends on BT_A2DP_ENABLE
- config BT_PIN_CODE
- string "Bluetooth pairing PIN code"
- default "05032026"
- help
- Static PIN code used for legacy Bluetooth pairing.
- Must be 1-16 digits. Connecting devices will be
- prompted to enter this PIN.
- config BT_SSP_ENABLED
- bool "Enable Secure Simple Pairing (SSP)"
- default n
- help
- Enable SSP for Bluetooth 2.1+ devices. When enabled,
- modern devices use numeric comparison (both sides
- confirm a displayed number) instead of the legacy PIN.
- A screen is required for this.
- endmenu
- menu "Display Configuration"
- config DISPLAY_ENABLED
- bool "Enable display"
- default n
- help
- Enable an I2C or SPI OLED display for showing track metadata,
- playback position, and a progress bar.
- if DISPLAY_ENABLED
- choice DISPLAY_DRIVER
- prompt "Display driver"
- default DISPLAY_DRIVER_SSD1306
- help
- Select the display controller IC.
- config DISPLAY_DRIVER_SSD1306
- bool "SSD1306 (128x64) OLED"
- config DISPLAY_DRIVER_SH1106
- bool "SH1106 (128x64) OLED"
- config DISPLAY_DRIVER_SSD1309
- bool "SSD1309 (128x64) OLED"
- config DISPLAY_DRIVER_SH1107
- bool "SH1107 (128x128) OLED"
- config DISPLAY_DRIVER_ST7789
- bool "ST7789 TFT"
- endchoice
- choice DISPLAY_HEIGHT
- prompt "Display height"
- default DISPLAY_HEIGHT_64
- depends on !DISPLAY_DRIVER_ST7789
- help
- Select the display pixel height. 128x32 displays use
- a compact two-line layout with scrolling text.
- config DISPLAY_HEIGHT_64
- bool "64 pixels (128x64)"
- config DISPLAY_HEIGHT_32
- bool "32 pixels (128x32)"
- depends on !DISPLAY_DRIVER_SSD1309 && !DISPLAY_DRIVER_SH1107
- endchoice
- choice DISPLAY_BUS
- prompt "Display bus"
- default DISPLAY_BUS_I2C
- depends on !DISPLAY_DRIVER_ST7789
- help
- Select the communication bus for the display.
- config DISPLAY_BUS_I2C
- bool "I2C"
- config DISPLAY_BUS_SPI
- bool "SPI"
- endchoice
- if DISPLAY_BUS_I2C
- config DISPLAY_I2C_SDA
- int "Display I2C SDA GPIO"
- default 21
- help
- GPIO pin for the display I2C data line.
- config DISPLAY_I2C_SCL
- int "Display I2C SCL GPIO"
- default 22
- help
- GPIO pin for the display I2C clock line.
- config DISPLAY_I2C_ADDR
- hex "Display I2C address (7-bit)"
- default 0x3C
- help
- 7-bit I2C address of the OLED display.
- Common values: 0x3C or 0x3D.
- endif
- if DISPLAY_BUS_SPI || DISPLAY_DRIVER_ST7789
- config DISPLAY_SPI_CLK
- int "Display SPI CLK GPIO"
- default 18
- help
- GPIO pin for the display SPI clock line.
- config DISPLAY_SPI_MOSI
- int "Display SPI MOSI GPIO"
- default 23
- help
- GPIO pin for the display SPI data (MOSI) line.
- config DISPLAY_SPI_CS
- int "Display SPI CS GPIO"
- default 5
- help
- GPIO pin for the display SPI chip select.
- config DISPLAY_SPI_DC
- int "Display SPI DC GPIO"
- default 16
- help
- GPIO pin for the display SPI data/command select.
- config DISPLAY_SPI_RST
- int "Display SPI RST GPIO"
- default -1
- help
- GPIO pin for the display reset line.
- Set to -1 if not connected.
- config DISPLAY_BL_GPIO
- int "Display backlight GPIO"
- default -1
- depends on DISPLAY_DRIVER_ST7789
- help
- GPIO pin for the display backlight.
- Set to -1 if not used or always on.
- config DISPLAY_ST7789_WIDTH
- int "ST7789 display width"
- default 320
- depends on DISPLAY_DRIVER_ST7789
- help
- Horizontal resolution exposed to LVGL after panel
- rotation/mirroring.
- config DISPLAY_ST7789_HEIGHT
- int "ST7789 display height"
- default 170
- depends on DISPLAY_DRIVER_ST7789
- help
- Vertical resolution exposed to LVGL after panel
- rotation/mirroring.
- config DISPLAY_ST7789_GAP_X
- int "ST7789 panel X gap"
- default 0
- depends on DISPLAY_DRIVER_ST7789
- help
- X offset passed to esp_lcd_panel_set_gap().
- config DISPLAY_ST7789_GAP_Y
- int "ST7789 panel Y gap"
- default 35
- depends on DISPLAY_DRIVER_ST7789
- help
- Y offset passed to esp_lcd_panel_set_gap().
- endif
- config DISPLAY_FLIP
- bool "Flip display 180 degrees"
- default n
- help
- Rotate the display output 180 degrees.
- config DISPLAY_UPDATE_MS
- int "Display refresh interval (ms)"
- default 500
- range 100 5000
- help
- How often the display redraws in milliseconds.
- endif
- endmenu
- menu "AirPlay Protocol"
- config AIRPLAY_FORCE_V1
- bool "Legacy mode: advertise AirPlay v1 (classic) only"
- default n
- help
- By default the receiver accepts BOTH AirPlay 1 (classic
- RAOP, used by TuneBlade, AirMusic, shairtunes2, older iOS
- fallback) and AirPlay 2 (HomeKit pairing, HAP-encrypted
- transport, used by current iOS). Protocol selection is
- automatic based on the request shape.
- Enable this option only if AirPlay 2 advertisement causes
- problems on your network (e.g. iOS preferring AirPlay 2
- with broken FairPlay verification). It hides the
- _airplay._tcp service entirely, leaving only _raop._tcp
- for classic RAOP clients. iOS will fall back to AirPlay 1
- with DACP remote control.
- When disabled (default), the receiver advertises as an
- AirPlay 2 device. Modern iOS uses the MRP (Media Remote
- Protocol) for remote control in AirPlay 2 mode, which
- is not implemented, so hardware play/pause falls back
- to local mute.
- Note: AirPlay v1 does not support RSA key exchange for
- audio encryption in this codebase. The receiver will
- advertise et=0 (no encryption). If iOS refuses to connect,
- audio encryption support may need to be added.
- config AIRPLAY_TIMING_THRESHOLD_MS
- int "Early/late timing threshold for buffered streams (ms)"
- default 10
- range 2 200
- help
- Maximum amount a frame may be early or late (in milliseconds)
- before the timing engine holds it as pending (early) or drops
- it (late). Buffered AirPlay 2 streams (AAC, type 103) have a
- deep jitter buffer, so a tight threshold keeps tight sync
- without causing drop-outs.
- config AIRPLAY_RT_TIMING_THRESHOLD_MS
- int "Early/late timing threshold for unbuffered streams (ms)"
- default 50
- range 2 500
- help
- Same as above but for unbuffered realtime streams (ALAC over
- UDP, type 96). Realtime streams have little or no jitter
- buffer to absorb scheduling hiccups (e.g. when image/metadata
- arrives on the RTSP connection), so a tight threshold causes
- audible drop-outs. A larger threshold tolerates the jitter at
- the cost of slightly looser sync. Increase this if you still
- hear drop-outs on AirPlay 1 / realtime playback.
- config ENABLE_AIRPLAY_ARTWORK
- bool "Enable cover-art / artwork reception"
- default n
- help
- Receive cover-art images. Enable it only if you have a display
- cabable of and want album art.
- endmenu
- menu "Button Configuration"
- config BTN_PLAY_PAUSE_GPIO
- int "Play/Pause button GPIO (-1 to disable)"
- default -1
- range -1 48
- help
- GPIO pin for the play/pause button (active-low, internal pull-up).
- Set to -1 to disable.
- config BTN_VOLUME_UP_GPIO
- int "Volume Up button GPIO (-1 to disable)"
- default -1
- range -1 48
- help
- GPIO pin for the volume up button (active-low, internal pull-up).
- Supports long-press auto-repeat.
- Set to -1 to disable.
- config BTN_VOLUME_DOWN_GPIO
- int "Volume Down button GPIO (-1 to disable)"
- default -1
- range -1 48
- help
- GPIO pin for the volume down button (active-low, internal pull-up).
- Supports long-press auto-repeat.
- Set to -1 to disable.
- config BTN_NEXT_GPIO
- int "Next Track button GPIO (-1 to disable)"
- default -1
- range -1 48
- help
- GPIO pin for the next track button (active-low, internal pull-up).
- Set to -1 to disable.
- config BTN_PREV_GPIO
- int "Previous Track button GPIO (-1 to disable)"
- default -1
- range -1 48
- help
- GPIO pin for the previous track button (active-low, internal pull-up).
- Set to -1 to disable.
- config BTN_PLAY_PAUSE_DOUBLE_CLICK
- bool "Play/Pause double-click cycles channel mode"
- default n
- help
- When enabled, a single play/pause press is deferred until the
- double-click window expires. Two presses within that window
- cycle the audio channel mode instead of play/pause.
- endmenu
- endmenu
|