I am facing a problem with ESP32-POE, when i try to start a bluetooth beacon and turn on promiscuous mode, the board just crashes. the code i use works fine on my other esp32 board (i currently use DOIT ESP32 DEVKITv1).
Currently i am using arduino IDE with ESP32 library version 1.0.3.
the current code i am using is the following :
void setIBeacon() {
char id[12];
String uuid;
uint64_t chipid = ESP.getEfuseMac(); // The chip ID is essentially its MAC address(length: 6 bytes).
uint16_t chip = (uint16_t)(chipid >> 32);
snprintf(id, 12, "%04X%08X", chip, (uint32_t)chipid);
snprintf(uniqueid, 32, "ESP32-%04X%08X_%s", chip, (uint32_t)chipid, FW_VERSION);
uuid = "1935CE03F2D247F899AF"+String(id);
unsigned long int uidul=strtoul("0000000044817512", NULL, 16);
uint64_t uid = uint64_t(uidul);
BLEBeacon oBeacon = BLEBeacon();
oBeacon.setManufacturerId(0x4C00);
oBeacon.setProximityUUID(BLEUUID((uint32_t)(uid)));
oBeacon.setMajor(chip);
oBeacon.setMinor((uint32_t)chipid);
oBeacon.setSignalPower(-60);
BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
oAdvertisementData.setFlags(0x04);
std::string strServiceData = "";
strServiceData += (char)26; // Len
strServiceData += (char)0xFF; // Type
strServiceData += oBeacon.getData();
oAdvertisementData.addData(strServiceData);
pAdvertising->setAdvertisementData(oAdvertisementData);
Serial.println("Service Data set!");
Serial.println("");
pAdvertising->setScanResponseData(oAdvertisementData);
Serial.println("Scan response set!");
}
void initBLEIBeacon(){
BLEDevice::init("");
// Create BLE Server
BLEServer *pServer = BLEDevice::createServer();
pAdvertising = pServer->getAdvertising();
setIBeacon();
// Start advertising
BLEDevice::startAdvertising();
Serial.println("Advertising started...");
}
void initPromiscuous(){
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&cfg);
esp_wifi_set_ps(WIFI_PS_NONE);
esp_wifi_set_storage(WIFI_STORAGE_RAM);
esp_wifi_set_mode(WIFI_MODE_NULL);
esp_wifi_start();
esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&promiscuousCallback);
esp_wifi_set_channel(channel,WIFI_SECOND_CHAN_NONE);
}
void setup() {
Serial.begin(115200);
if(!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)){
Serial.println("SPIFFS Mount Failed");
return;
}
else{
Serial.println("SPIFFS Mount Success");
}
// Setup promiscuous mode.
initPromiscuous();
initBLEIBeacon();
lastBoot = millis();
}
and when i run the code on ESP32-POE, the board just crashes and bootloops with the following stacktrace. this doesn't occur with my other ESP32 board.
Guru Meditation Error: Core 0 panic'ed (StoreProhibited). Exception was unhandled.
Core 0 register dump:
PC : 0x4000c46c PS : 0x00060230 A0 : 0x801338ff A1 : 0x3fff7ba0
A2 : 0x00000000 A3 : 0x00000000 A4 : 0x00000cb8 A5 : 0x00000000
A6 : 0x00000001 A7 : 0x000000cb A8 : 0x80084e09 A9 : 0x3fff7b40
A10 : 0x00000000 A11 : 0x00001800 A12 : 0x00000000 A13 : 0x00000003
A14 : 0x00001800 A15 : 0x00000083 SAR : 0x00000008 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT : 0x000000ca
Backtrace: 0x4000c46c:0x3fff7ba0 0x401338fc:0x3fff7bb0 0x40122d77:0x3fff7bd0 0x400fc0be:0x3fff7bf0 0x400fc0fb:0x3fff7c10 0x4008e009:0x3fff7c40
PC: 0x4000c46c
EXCVADDR: 0x00000000
Decoding stack results
0x401338fc: RFCOMM_Init at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/bt/bluedroid/stack/rfcomm/port_api.c line 1719
0x40122d77: BTE_InitStack at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/bt/bluedroid/main/bte_init.c line 166
0x400fc0be: btu_task_start_up at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/bt/bluedroid/stack/btu/btu_task.c line 281
0x400fc0fb: btu_task_thread_handler at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/bt/bluedroid/stack/btu/btu_task.c line 226
0x4008e009: vPortTaskWrapper at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/freertos/port.c line 143
any help will be appreciated on pointing out any mistakes i made or any suggestions on how i could get both promiscuous mode and bluetooth running together on ESP32-POE. I currently have no idea how to fix this because the code works fine on my other board.
Just the bluetooth code or promiscuous code running seperately works fine but crashes when run together.
Thank you.