Hi!
I just received my Atom VoiceS3R today and noticed an issue with the latest version of M5Unified. With version 0.2.20, basically none of the examples worked. I think it has to do with the device been picked up as an AtomS3R-Ext instead of a Atom VoiceS3R, I wrote this debug script:
`#include "M5Unified.hpp"
// Override the board detection by reinitializing with a fresh config
void setup() {
// First, initialize with minimal config to avoid I2C conflicts
m5::M5Unified::config_t cfg;
cfg.clear_display = false; // Skip display init
cfg.external_display_value = 0; // Disable all displays
M5.begin(cfg);
// Now, reinitialize with the CORRECT board (145) and speaker flags
cfg.fallback_board = lgfx::boards::board_t::board_M5AtomVoiceS3R;
cfg.external_speaker.atomic_echo = 1; // Enable NS4168 speaker
cfg.internal_spk = true; // Enable internal speaker
M5.begin(cfg); // Reinitialize with the correct board
Serial.begin(115200);
delay(5000);
Serial.println("Board ID: " + String(int(M5.getBoard()))); // Should now be 145
Serial.println("Speaker enabled: " + String(M5.Speaker.isEnabled() ? "YES" : "NO"));
M5.Speaker.setVolume(255);
}
void loop() {
Serial.println("Playing tone...");
M5.Speaker.tone(1000, 1000);
delay(2000);
}`
Logs on 0.2.20(No tone being played of the device):
Board ID: 143 Speaker enabled: YES Playing tone... [ 5820][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=38 scl=39 freq=100000 [ 5829][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5836][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5843][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5850][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5857][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5864][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5871][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5878][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5885][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5892][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5899][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5906][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5913][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=45 scl=0 freq=100000 [ 5921][E][Wire.cpp:137] setPins(): bus already initialized. change pins only when not. [ 5929][W][Wire.cpp:301] begin(): Bus already started in Master Mode. Playing tone... Playing tone...
Then I tried downgrading to 0.2.15, which works perfectly(Tone gets played on the device):
Board ID: 145 Speaker enabled: YES Playing tone... Playing tone...
Hi!
I just received my Atom VoiceS3R today and noticed an issue with the latest version of M5Unified. With version 0.2.20, basically none of the examples worked. I think it has to do with the device been picked up as an AtomS3R-Ext instead of a Atom VoiceS3R, I wrote this debug script:
`#include "M5Unified.hpp"
// Override the board detection by reinitializing with a fresh config
void setup() {
// First, initialize with minimal config to avoid I2C conflicts
m5::M5Unified::config_t cfg;
cfg.clear_display = false; // Skip display init
cfg.external_display_value = 0; // Disable all displays
M5.begin(cfg);
}
void loop() {
Serial.println("Playing tone...");
M5.Speaker.tone(1000, 1000);
delay(2000);
}`
Logs on 0.2.20(No tone being played of the device):
Board ID: 143 Speaker enabled: YES Playing tone... [ 5820][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=38 scl=39 freq=100000 [ 5829][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5836][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5843][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5850][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5857][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5864][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5871][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5878][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5885][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5892][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5899][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5906][V][common.cpp:2088] writeBytes(): [LGFX] i2c write error : ack wait [ 5913][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=45 scl=0 freq=100000 [ 5921][E][Wire.cpp:137] setPins(): bus already initialized. change pins only when not. [ 5929][W][Wire.cpp:301] begin(): Bus already started in Master Mode. Playing tone... Playing tone...Then I tried downgrading to 0.2.15, which works perfectly(Tone gets played on the device):
Board ID: 145 Speaker enabled: YES Playing tone... Playing tone...