Pre-order of the Mn Cast! [obsolete available on Amazon]

Just started setting this up. What is the correct firmware for updates? I just updated to the latest I2S-4MFlash (2.1223-16) but now my display stopped working.

Maybe you ran in the same problem when I tried to update the old firmware the Mn Cast was shiped with.
As you can read on my SqueezeESP32 info blog. BTW did you make an backup of your NVS hardware configuration, via NVS Editor of the web interface of the player? If you didn’t made such a NVS backup, please let me know. Here or on my blog (comments can also be created on my blog Anonymously and without registration, but with moderation). I can then help with a working NVS hardware config file, If needed.

And here you will find my SqueezeESP32 Beginners Guide. There you will get all the informations on SqueezeESP32 FW and how to start with it.

1 Like

Thanks mate! I will read up on this. Lucky me I bought 2 devices and the second one I did not update. Now it works, at least with bluetooth.

I must admit I am totally a newb with Squeezelite and LMS. My thoughts were to use this device with Music Assistant directly and Raspiaudio with ESPHome. Am I going the wrong route here?

The audio quality from my first simple tests are quite good though. Happy so far! Now to get it into HA and do an upgrade the “right” way.

This is open hardware based on open software.
In this world, the classic right or wrong does not exist. If you think your choice is the right one for you, then so be it. But if it is the best choice you can make, you have to find out for yourself. I don’t know the two apps (Music Assistant & ESPHome) you mentioned at all. Neither for what they are good nor what their advantages are. I also don’t get what you mean by Raspiaudio? Cause that’s only the name of the company, we both by open hardware audio products from. I can only tell you that OTA updates with any ESP32 audio device and SqueezeESP32 only work with LMS and the SqueezeESP32 plugin. Therefore you need at least temporarily an LMS installation, which for example only starts on your computer when you want to do an OTA update. And while you are at LMS, you can have a maybe a closer look at what is possible with it, in terms of music and multiroom. Maybe you’ll realize like I did, wow that’s exactly what I’ve been always looking for. :wink:

To avoid confusion this was my original idea: https://esphome.github.io/media-players/. To load this firmware onto the device and get it directly connected and managed in Home Assistant with ESPHome. This new device does not have a firmware for this purpose so I will for now use LMS and see how that works, just as you suggest :slight_smile:

@cOOLio thanks for your super precise review!
To answer to some of your questions :
-Black screen connector was hand re-worked on this batch because it was 3mm higher than the specification, so it was not fitting into the case anymore, althought it does not affect useability it will be fixed on the the production batch.

-The choice to leave a microphone extension port is for my secret plan to one day have the Home Assistant working as an open source vocal assitant.

-The IR and SD costs almost nothing to implement, and it could be usefull in some application other than Squeezelite, but I agree you only see SD on the cheapest mp3 players.

@sbarmen I plan that my intern will do a website where you can load all the last firmware for Squeezelite, HA and others using the Chrome browser.
Also Louis is currently working on adding Wifi Improv to Squeezelite to be able to set wifi credential from the Chrome bowser like the genius of HA did for their software.

My talented contacts at HA told me that they will add the MN cast soon in HA, but I have no date to give you.

1 Like

Ok so now I have tried to follow ur lead in the blog @cOOLio. Flashed the recovery, then the 1.x version and now the player connects and works with bluetooth. Still I cannot get the display to function, and it is unclear to me whether I should upgrade to the 2.x release again. You say the OTA upgrades works again, did you upgrade?

This is my display config in the NVEeditor:

I use V1. 32.1180

Display disappeared after upgrade (many NVS entries were lost) so I changed NVS to same setting as you use.

I found I had to reboot ESP32 for some changes to take effect.

I did a quick test of IR port (configured set_GPIO 12=ir) and I couldn’t get it to work with a SB remote.
Boot log message show IR device is recognised but no log messages (e.g. message sent to LMS) shown when using remote.

current Squeezelite code I think only recognize NEC remote protocol, I have configured my Xiaomi phone that has a IR emitter to NEC and I think got some logs back when pressing the remote.

Sadly reboot does not help here. :frowning:

The README on the GIT hub sites says
‘The IR codes are send “as is” to LMS, so only a Logitech SB remote from Boom, Classic or Touch will work.’
so I assume my SB3 (aka classic) and Boom remotes should work.

I shall look for other issues and see if I can get more log info.

What version of V1 - 32 vs 16 and build.

Can you export your NVS config and post/link it to check - in case there is some other difference - a number of NVS entries were lost in upgrade not just the display config but I can’t remember which ones.
edit
My config
{
“a2dp_ctmt”: “1000”,
“a2dp_ctrld”: “500”,
“a2dp_dev_name”: “Muse”,
“a2dp_sink_name”: “SMSL BT4.2”,
“a2dp_spin”: “0000”,
“actrls_config”: “”,
“airplay_name”: “Muse-Airplay-xxxx”,
“airplay_port”: “5000”,
“ap_channel”: “1”,
“ap_ip_address”: “192.168.4.1”,
“ap_ip_gateway”: “192.168.4.1”,
“ap_ip_netmask”: “255.255.255.0”,
“ap_pwd”: “musemuse”,
“ap_ssid”: “Muse-xxxx”,
“autoexec”: “1”,
“autoexec1”: “squeezelite -o I2S -b 500:2000 -d all=info -C 30 -W -n “Muse-xxxx””,
“bat_config”: “”,
“boutons”: “”,
“bt_name”: “Muse-xxxx”,
“bt_sink_pin”: “1234”,
“bt_sink_volume”: “127”,
“bypass_wm”: “0”,
“dac_config”: “bck=5,ws=25,do=26,sda=18,scl=23,model=Muse”,
“dac_controlset”: “”,
“display_config”: “I2C,width=128,height=64,address=60,driver=SH1106,rotate”,
“enable_airplay”: “N”,
“enable_bt_sink”: “N”,
“equalizer”: “0,0,0,0,0,0,0,0,0,0”,
“eth_config”: “”,
“gpio_exp_config”: “”,
“host_name”: “Muse-xxxx”,
“i2c_config”: “scl=23,sda=18,speed=400000,port=0”,
“jack_mutes_amp”: “n”,
“led_brightness”: “”,
“lms_ctrls_raw”: “n”,
“metadata_config”: “”,
“ota_erase_blk”: “249856”,
“ota_prio”: “6”,
“ota_stack”: “10240”,
“rel_api”: “https://api.github.com/repos/sle118/squeezelite-esp32/releases”,
“release_url”: “https://github.com/sle118/squeezelite-esp32/releases”,
“rotary_config”: “A=32,B=19,SW=0,volume,knobonly”,
“set_GPIO”: “12=ir”,
“spdif_config”: “bck=5,ws=25,do=4”,
“spi_config”: “”,
“stats”: “n”,
“target”: “”,
“telnet_block”: “500”,
“telnet_buffer”: “40000”,
“telnet_enable”: “D”,
“wifi_smode”: “f”
}

Thanks, there are differences for sure!

nosb@no-osl-stba diff % diff -y nvs_config_Yamaha-Muse_1664970559982json.txt bpa.txt
{								{
  "a2dp_ctmt": "1000",					      |	“a2dp_ctmt”: “1000”,
  "a2dp_ctrld": "500",					      |	“a2dp_ctrld”: “500”,
  "a2dp_dev_name": "Muse",				      |	“a2dp_dev_name”: “Muse”,
  "a2dp_sink_name": "SMSL BT4.2",			      |	“a2dp_sink_name”: “SMSL BT4.2”,
  "a2dp_spin": "0000",					      |	“a2dp_spin”: “0000”,
  "actrls_config": "",					      |	“actrls_config”: “”,
  "airplay_name": "Yamaha-Muse-Airplay",		      |	“airplay_name”: “Muse-Airplay-xxxx”,
  "airplay_port": "5000",				      |	“airplay_port”: “5000”,
  "ap_channel": "1",					      |	“ap_channel”: “1”,
  "ap_ip_address": "192.168.4.1",			      |	“ap_ip_address”: “192.168.4.1”,
  "ap_ip_gateway": "192.168.4.1",			      |	“ap_ip_gateway”: “192.168.4.1”,
  "ap_ip_netmask": "255.255.255.0",			      |	“ap_ip_netmask”: “255.255.255.0”,
  "ap_pwd": "musemuse",					      |	“ap_pwd”: “musemuse”,
  "ap_ssid": "Yamaha-Muse",				      |	“ap_ssid”: “Muse-xxxx”,
  "autoexec": "1",					      |	“autoexec”: “1”,
  "autoexec1": "squeezelite -o I2S -b 500:2000 -d all=info -C |	“autoexec1”: “squeezelite -o I2S -b 500:2000 -d all=info -C 3
  "bat_config": "",					      |	“Muse-xxxx””,
  "boutons": "",					      |	“bat_config”: “”,
  "bt_name": "Yamaha-Muse",				      |	“boutons”: “”,
  "bt_sink_pin": "1234",				      |	“bt_name”: “Muse-xxxx”,
  "bt_sink_volume": "127",				      |	“bt_sink_pin”: “1234”,
  "bypass_wm": "0",					      |	“bt_sink_volume”: “127”,
  "dac_config": "bck=5,ws=25,do=26,sda=18,scl=23,model=Muse", |	“bypass_wm”: “0”,
  "dac_controlset": "",					      |	“dac_config”: “bck=5,ws=25,do=26,sda=18,scl=23,model=Muse”,
  "display_config": "I2C,width=128,height=64,address=60,drive |	“dac_controlset”: “”,
  "enable_airplay": "1",				      |	“display_config”: 
  "enable_bt_sink": "1",				      |	“I2C,width=128,height=64,address=60,driver=SH1106,rotate”,
  "equalizer": "00,00,00,00,00,00,00,00,00,00",		      |	“enable_airplay”: “N”,
  "eth_config": "",					      |	“enable_bt_sink”: “N”,
  "host_name": "Yamaha-Muse",				      |	“equalizer”: “0,0,0,0,0,0,0,0,0,0”,
  "i2c_config": "",					      |	“eth_config”: “”,
  "jack_mutes_amp": "n",				      |	“gpio_exp_config”: “”,
  "led_brightness": "",					      |	“host_name”: “Muse-xxxx”,
  "lms_ctrls_raw": "n",					      |	“i2c_config”: “scl=23,sda=18,speed=400000,port=0”,
  "metadata_config": "",				      |	“jack_mutes_amp”: “n”,
  "ota_erase_blk": "249856",				      |	“led_brightness”: “”,
  "ota_prio": "6",					      |	“lms_ctrls_raw”: “n”,
  "ota_stack": "10240",					      |	“metadata_config”: “”,
  "rel_api": "https://api.github.com/repos/sle118/squeezelite |	“ota_erase_blk”: “249856”,
  "release_url": "https://github.com/sle118/squeezelite-esp32 |	“ota_prio”: “6”,
  "rotary_config": " A=32,B=19,SW=0,volume,longpress",	      |	“ota_stack”: “10240”,
  "set_GPIO": "",					      |	“rel_api”: 
  "spdif_config": "",					      |	“https://api.github.com/repos/sle118/squeezelite-esp32/releas
  "spi_config": "",					      |	“release_url”: “https://github.com/sle118/squeezelite-esp32/r
  "stats": "n",						      |	“rotary_config”: “A=32,B=19,SW=0,volume,knobonly”,
  "telnet_block": "500",				      |	“set_GPIO”: “12=ir”,
  "telnet_buffer": "40000",				      |	“spdif_config”: “bck=5,ws=25,do=4”,
  "telnet_enable": "",					      |	“spi_config”: “”,
  "wifi_smode": "f"					      |	“stats”: “n”,
}							      \	“target”: “”,
							      >	“telnet_block”: “500”,
							      >	“telnet_buffer”: “40000”,
							      >	“telnet_enable”: “D”,
							      >	“wifi_smode”: “f”
							      >	}

Now my display is back on! Not sure what settings changed it but I added the spdif_config, set_GPIO, changed the equalizer I think. At least that lit the display back up :smiley: Thanks!

Check this NVS backup

There are also backups of others players I own already. So choose the right one.

It’s only the config of the hardware of the Mn Cast, noting else will changed.

@NVS Editor

  1. [ Load file ] (choose NVS json backup file)
  2. [ Commit ]
  3. [ Reboot ]

Then all the hardware should work again.

Additional enhancements I added to NVS Backup file:

  • Volume Control +Long Press > Play/Pause Prev./Next | Long press again to get back to volume control
  • Display is flipped so that the IR holes are at front and the display can still be read normally.
  • Medieval IR enabled :wink:

@Raspiaudio
THX for those background info. Don’t know which fabric your partner is, but it seems they have some quality issues. Maybe Makerfabs (Open Hardware OEM is there main business) could be an alternative, or to make more pressure to your current partner. :wink:

Regarding the faulty display, I still have to think what could be the best solution,
so that the environment is not unnecessarily polluted because of such a small OLED display.
Maybe you can think of a solution on this for the environment as well.

But I’ll send you an email about that when I have more time and after the white one has arrived and been briefly tested.

Cheers

cOOLio

I think the missing setting was i2c_config. The i2c bus can use different ESP32 pins. This tells the ESP32 which pins are to be connected to device SDA & SCL. I think the DAC and display share the bus on Mn Cast.

The i2c config settings usually change with different boards depending on how the board has been designed.

@bpa this dac does not need i2c, it is only using I2s

@cOOLio do you refer as “quality issue” the shorter than expected screen connector it is not, just a specification of a component that differs from what you receive, it happens. This is why I’m doing pre-serie. Thanks for your help.

No No, that’s fine for me. I mean the faulty screen itself only. All the rest is fine for me.