Hi and welcome!
The 2 pins you are mentionning are used already.
On the top schematic of this thread I can see that this is free to use :
GPIO 4 12 19 18

Use 2 of those for I2C, 2 for any button.

Feel free to share you project pictures!

1 Like

Would you mind sharing your pin configuration please?
I’m building something similar and am struggling with the SPI pinout.

Much appreciated!

I have not tried to connect a SPI screen, but the pin with nothing marked are free :


Let us know what worked for you or if you can’t make it

1 Like

Is there a way to set the gain in the Squeezelite firmware?

Hi Intrinseca and welcome

According to the Squeezelite documentation

  • “pull”: (false) activate internal pull up/down

I have not tried but you probably can define a dummy button in the NVS config set to pull:false on GPIO23
I could try but only next week. If you did it could you export and share your NVS config for the Proto?


1 Like

Yes, I think that worked.

For future reference:

  1. Go to “credits” and enable the NVS editor
  2. Create a config called high_gain with the text
    The normal might be optional, I didn’t try without.
  3. Set actrls_config to high_gain.
  4. Commit and reboot.

The name isn’t important but has to match in steps 2 and 3. After doing this, connecting a 100k resistor between GND and GPIO23 no longer increased the volume, so I’m pretty sure I’m on the highest setting now.

I’m using my proto with one of these USB speakers I had lying around. Sadly the proto doesn’t quite fit inside, but the drivers (I’m only using one of them) are the perfect 4Ω/3W spec.

try “pull”:false instead
as the 15db needs a pull down

let me know if you notice a louder sound

I’m pretty sure the logic of

“type”: (BUTTON_LOW) logic level when the button is pressed
“pull”: (false) activate internal pull up/down


is to use the type to say whether a press is high (pull down) or low (pull up) and then you set pull to true to enable the appropriate pull-up.

I would probably need to dive into the squeezelite code to be completely sure, but by experiment I think I have it right… Will double check tomorrow.

Here is the relevant code: set pull to true and mode to BUTTON_HIGH to run gpio_set_pull_mode(gpio, GPIO_PULLDOWN_ONLY).

thanks for taking the time to check that, could you from the web interface export you NVS settings and share it? thanks

Here you go:

  "a2dp_ctmt": "1000",
  "a2dp_ctrld": "500",
  "a2dp_dev_name": "Squeezelite",
  "a2dp_sink_name": "SMSL BT4.2",
  "a2dp_spin": "0000",
  "actrls_config": "high_gain",
  "airplay_name": "ESP32-AirPlay-5fef4",
  "airplay_port": "5000",
  "ap_channel": "1",
  "ap_ip_address": "",
  "ap_ip_gateway": "",
  "ap_ip_netmask": "",
  "ap_pwd": "squeezelite",
  "ap_ssid": "squeezelite-5fef4",
  "autoexec": "1",
  "autoexec1": "squeezelite -o I2S -b 500:2000 -d all=info -C 30 -W -n \"squeezelite-5fef4\"",
  "bat_config": "",
  "bt_name": "ESP32-BT-5fef4",
  "bt_sink_pin": "1234",
  "bt_sink_volume": "127",
  "button": "",
  "buttons": "",
  "bypass_wm": "0",
  "dac_config": "model=I2S,bck=5,ws=25,do=26,mute=21:0",
  "dac_controlset": "",
  "display_config": "",
  "enable_airplay": "1",
  "enable_bt_sink": "1",
  "equalizer": "00,00,00,00,00,00,00,00,00,00",
  "eth_config": "",
  "high_gain": "[{\"gpio\":23,\"type\":\"BUTTON_HIGH\",\"pull\":true,\"normal\":{\"pressed\":\"ACTRLS_TOGGLE\"}}]",
  "host_name": "squeezelite-5fef4",
  "i2c_config": "",
  "jack_mutes_amp": "n",
  "led_brightness": "",
  "lms_ctrls_raw": "n",
  "low_gain": "[{\"gpio\":23,\"type\":\"BUTTON_LOW\",\"pull\":true,\"normal\":{\"pressed\":\"ACTRLS_TOGGLE\"}}]",
  "metadata_config": "",
  "ota_erase_blk": "249856",
  "ota_prio": "6",
  "ota_stack": "10240",
  "rel_api": "",
  "release_url": "",
  "rotary_config": "",
  "set_GPIO": "",
  "spdif_config": "",
  "spi_config": "",
  "stats": "n",
  "telnet_block": "500",
  "telnet_buffer": "40000",
  "telnet_enable": "",
  "wifi_smode": "f"

Along the way, I tried running both the ESPHome firmware and the latest release of Squeezelite-ESP32. Both gave really glitchy, stuttery, audio. The build on your fork works great. Do you know what the difference is? Has anyone else noticed this?

Is it possible that this solution is obsolete as of right now? I followed your steps ("actrls_config": "high_gain", was already part of the config) but there was no change in volume. Did the gain become default maybe? (I2S-4MFlash.16.2.1254.master-v4)

The generic I2S-4MFlash.16.2.1254.master-v4 release can’t integrate this hardware specific configuration of the Proto by default.

Many causes are possible for a low volume, my recommendation is to try to flash your Proto using the default Bluetooth app :

If the volume is louder then you might have a software issue, otherwise hardware (speaker impedance, cable, power supply)

A post was merged into an existing topic: The sound of my ESP MUSE PROTO is way to weak

I got my Muse Proto board today. I see, there is some code preloaded - blue LED blinking, pushing button makes beep and second LED turns green. I can’t find any description what else this default program can do?

Hi, the default program is just a factory test, sending frequency thru the speaker and recording with the mic calculating frequency deviation and write it on the SD.

Code is here : GitHub - RASPIAUDIO/MuseProtoFactoryTest

for more app check


Just got this board working via Home assistant. In ESPhome I see ‘update available’.
When I tried to update I get following error:

INFO Reading configuration /config/esphome/raspiaudio-muse-proto-381bb0.yaml...
WARNING GPIO0 is a Strapping PIN and should be avoided.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
Failed config

media_player: [source /config/esphome/.esphome/packages/7b8574f6/raspiaudio-muse-proto.yaml:34]
  Component not found: media_player.
  - platform: i2s_audio
    id: media_out
    name: RaspiAudio Muse Proto
    dac_type: external
    i2s_lrclk_pin: GPIO25
    i2s_dout_pin: GPIO26
    i2s_bclk_pin: GPIO5
    mode: mono
      number: GPIO21
      inverted: True
binary_sensor.gpio: [source /config/esphome/.esphome/packages/7b8574f6/raspiaudio-muse-proto.yaml:47]
  platform: gpio
    number: GPIO0
    inverted: True
      input: True
      pullup: True
  name: RaspiAudio Muse Proto Button
  on_click:  [source /config/esphome/.esphome/packages/7b8574f6/raspiaudio-muse-proto.yaml:56]
    - [source /config/esphome/.esphome/packages/7b8574f6/raspiaudio-muse-proto.yaml:56]
      Unable to find action with the name 'media_player.toggle'.
      media_player.toggle: media_out [source /config/esphome/.esphome/packages/7b8574f6/raspiaudio-muse-proto.yaml:56]

Seems to work otherwise, so doesn’t matter that much?

Hi, you can ignore this warning message as there is no external pull up or down on this board

Can’t ignore it for the update. This error prevents updating as far as I can see

There was an update in ESPHome to support voice assistants/microphones and they split the media play config to two separate sections. See the breaking changes section at: ESPHome 2023.4.0 - 19th April 2023 — ESPHome