meshtastic / firmware

Meshtastic device firmware
https://meshtastic.org
GNU General Public License v3.0
3k stars 715 forks source link

Boot issue fix of Cardkb on ESP32 #3933

Closed HarukiToreda closed 2 weeks ago

HarukiToreda commented 1 month ago

I was able to fix the issue and tested it on Heltec V3, Wireless Stick Lite and Tdeck, no boot issues and keyboard works with no problems. This is regarding the issue #3749

todd-herbert commented 1 month ago

I see that the KbI2CBase class is set-up to run in the background. I wonder if it would be a good idea (or even possible at all?) to perform this delayed I2C scan from its runOnce() method? That way, the main boot sequence won't delay while waiting for the CardKB.

HarukiToreda commented 1 month ago

I see that the KbI2CBase class is set-up to run in the background. I wonder if it would be a good idea (or even possible at all?) to perform this delayed I2C scan from its runOnce() method? That way, the main boot sequence won't delay while waiting for the CardKB.

I did try but it the re-scan happens so fast that same problem, and I can't use delays cause it affects the serial boot. I was only able to make it work this way.

thebentern commented 1 month ago

I did try but it the re-scan happens so fast that same problem, and I can't use delays cause it affects the serial boot. I was only able to make it work this way.

You could potentially run setIntervalFromNow() to delay the thread. Some modules like NodeInfoModule do this to delay initialization

caveman99 commented 1 month ago

@HarukiToreda @thebentern can someone please test that ? i am currently out of cardkb. but copilot said this should absolutely work, no questions there! :-)

HarukiToreda commented 1 month ago

@HarukiToreda @thebentern can someone please test that ? i am currently out of cardkb. but copilot said this should absolutely work, no questions there! :-)

It works but I think something may have broken on the BME680 Sensor. It's disabling after detected. [EnvironmentTelemetryModule]

DEBUG | ??:??:?? 11 [Screen] Finished building frames. numframes: 7 INFO | ??:??:?? 15 [EnvironmentTelemetryModule] Environment Telemetry: Initializing ERROR | ??:??:?? 15 [EnvironmentTelemetryModule] setConfig BSEC2 code: -34 INFO | ??:??:?? 15 [EnvironmentTelemetryModule] BME680 state read from /prefs/bsec.dat. WARN | ??:??:?? 15 [EnvironmentTelemetryModule] updateSubscription BSEC2 code: 14 INFO | ??:??:?? 15 [EnvironmentTelemetryModule] Init sensor: BME680 with the BSEC Library version 2.5.0.2 DEBUG | ??:??:?? 15 [EnvironmentTelemetryModule] BME680Sensor::runOnce: bme680.status 14 WARN | ??:??:?? 15 [EnvironmentTelemetryModule] Could not connect to detected BME680 sensor. Removing from nodeTelemetrySensorsMap. DEBUG | ??:??:?? 25 [Power] Battery: usbPower=1, isCharging=1, batMv=4231, batPct=100 INFO | ??:??:?? 35 [NodeInfoModule] Sending our nodeinfo to mesh (wantReplies=1)`

HarukiToreda commented 1 month ago

@HarukiToreda @thebentern can someone please test that ? i am currently out of cardkb. but copilot said this should absolutely work, no questions there! :-)

It works but I think something may have broken on the BME680 Sensor. It's disabling after detected. [EnvironmentTelemetryModule]

DEBUG | ??:??:?? 11 [Screen] Finished building frames. numframes: 7 INFO | ??:??:?? 15 [EnvironmentTelemetryModule] Environment Telemetry: Initializing ERROR | ??:??:?? 15 [EnvironmentTelemetryModule] setConfig BSEC2 code: -34 INFO | ??:??:?? 15 [EnvironmentTelemetryModule] BME680 state read from /prefs/bsec.dat. WARN | ??:??:?? 15 [EnvironmentTelemetryModule] updateSubscription BSEC2 code: 14 INFO | ??:??:?? 15 [EnvironmentTelemetryModule] Init sensor: BME680 with the BSEC Library version 2.5.0.2 DEBUG | ??:??:?? 15 [EnvironmentTelemetryModule] BME680Sensor::runOnce: bme680.status 14 WARN | ??:??:?? 15 [EnvironmentTelemetryModule] Could not connect to detected BME680 sensor. Removing from nodeTelemetrySensorsMap. DEBUG | ??:??:?? 25 [Power] Battery: usbPower=1, isCharging=1, batMv=4231, batPct=100 INFO | ??:??:?? 35 [NodeInfoModule] Sending our nodeinfo to mesh (wantReplies=1)`

nevermind, this is an unrelated issue. mentioned on in 3938. The keyboard works fine

HarukiToreda commented 1 month ago

could someone else please test. It works for me for both Wireless Stick Lite and Heltec V3

caveman99 commented 2 weeks ago

@HarukiToreda can you test this latest code? it's working for me on the m5stack with cardkb.

HarukiToreda commented 2 weeks ago

@HarukiToreda can you test this latest code? it's working for me on the m5stack with cardkb.

Just tested on both Heltec V3 and Wireless tracker with cardkbs. It works perfectly.