Merge pull request #10 from lorow/fix/fix-uvc-not-starting-on-xiao-babble

Fix UVC not starting on Babble and Xiao boards due to a miss-configuration
This commit is contained in:
Lorow
2025-08-27 00:02:58 +02:00
committed by GitHub
10 changed files with 45 additions and 24 deletions
@@ -202,7 +202,8 @@ bool CameraManager::setupCamera()
// Thanks to lick_it, we discovered that OV5640 likes to overheat when // Thanks to lick_it, we discovered that OV5640 likes to overheat when
// running at higher than usual xclk frequencies. // running at higher than usual xclk frequencies.
// Hence, why we're limiting the faster ones for OV2640 // Hence, why we're limiting the faster ones for OV2640
if (const auto camera_id = temp_sensor->id.PID; camera_id == OV5640_PID) { if (const auto camera_id = temp_sensor->id.PID; camera_id == OV5640_PID)
{
config.xclk_freq_hz = OV5640_XCLK_FREQ_HZ; config.xclk_freq_hz = OV5640_XCLK_FREQ_HZ;
esp_camera_deinit(); esp_camera_deinit();
esp_camera_init(&config); esp_camera_init(&config);
@@ -36,10 +36,10 @@ struct DeviceMode_t : BaseConfigModel
void load() void load()
{ {
// Default mode can be controlled via sdkconfig: // Default mode can be controlled via sdkconfig:
// - If CONFIG_GENERAL_DEFAULT_WIRED_MODE is enabled, default to UVC // - If CONFIG_START_IN_UVC_MODE is enabled, default to UVC
// - Otherwise default to AUTO // - Otherwise default to AUTO
int default_mode = int default_mode =
#if CONFIG_GENERAL_DEFAULT_WIRED_MODE #if CONFIG_START_IN_UVC_MODE
static_cast<int>(StreamingMode::UVC); static_cast<int>(StreamingMode::UVC);
#else #else
static_cast<int>(StreamingMode::AUTO); static_cast<int>(StreamingMode::AUTO);
@@ -71,7 +71,11 @@ struct DeviceConfig_t : BaseConfigModel
this->OTALogin = this->pref->getString("OTALogin", "openiris"); this->OTALogin = this->pref->getString("OTALogin", "openiris");
this->OTAPassword = this->pref->getString("OTAPassword", "openiris"); this->OTAPassword = this->pref->getString("OTAPassword", "openiris");
this->OTAPort = this->pref->getInt("OTAPort", 3232); this->OTAPort = this->pref->getInt("OTAPort", 3232);
#if CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE
this->led_external_pwm_duty_cycle = this->pref->getInt("led_ext_pwm", CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE); this->led_external_pwm_duty_cycle = this->pref->getInt("led_ext_pwm", CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE);
#else
this->led_external_pwm_duty_cycle = this->pref->getInt("led_ext_pwm", 100);
#endif
}; };
void save() const void save() const
+2 -1
View File
@@ -6,7 +6,8 @@
static const char *UVC_STREAM_TAG = "[UVC DEVICE]"; static const char *UVC_STREAM_TAG = "[UVC DEVICE]";
extern "C" { extern "C"
{
static char serial_number_str[13]; static char serial_number_str[13];
const char *get_uvc_device_name() const char *get_uvc_device_name()
+9
View File
@@ -6,6 +6,15 @@ endmenu
menu "OpenIris: General Configuration" menu "OpenIris: General Configuration"
config START_IN_UVC_MODE
bool "Start in UVC Mode"
default false
help
Enables UVC (wired) support in the firmware by default.
To be used when a board is designed to be used primarily with wired headsets.
When enabled, the default device streaming mode will be UVC unless overridden by a
saved preference. When disabled, the default mode is AUTO.
config GENERAL_DEFAULT_WIRED_MODE config GENERAL_DEFAULT_WIRED_MODE
bool "Wired mode" bool "Wired mode"
default false default false
+2 -1
View File
@@ -570,7 +570,8 @@ CONFIG_ENV_GPIO_OUT_RANGE_MAX=48
# #
# OpenIris: General Configuration # OpenIris: General Configuration
# #
# CONFIG_GENERAL_DEFAULT_WIRED_MODE is not set # CONFIG_START_IN_UVC_MODE is not set
CONFIG_GENERAL_DEFAULT_WIRED_MODE=y
CONFIG_GENERAL_UVC_DELAY=30 CONFIG_GENERAL_UVC_DELAY=30
# end of OpenIris: General Configuration # end of OpenIris: General Configuration
+1
View File
@@ -571,6 +571,7 @@ CONFIG_ENV_GPIO_OUT_RANGE_MAX=48
# OpenIris: General Configuration # OpenIris: General Configuration
# #
# CONFIG_GENERAL_DEFAULT_WIRED_MODE is not set # CONFIG_GENERAL_DEFAULT_WIRED_MODE is not set
# CONFIG_START_IN_UVC_MODE is not set
# CONFIG_GENERAL_UVC_DELAY is not set # CONFIG_GENERAL_UVC_DELAY is not set
# end of OpenIris: General Configuration # end of OpenIris: General Configuration
+1
View File
@@ -60,3 +60,4 @@ CONFIG_LED_EXTERNAL_PWM_FREQ=20000
CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=50 CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=50
CONFIG_CAMERA_USB_XCLK_FREQ=23000000 CONFIG_CAMERA_USB_XCLK_FREQ=23000000
CONFIG_GENERAL_DEFAULT_WIRED_MODE=y CONFIG_GENERAL_DEFAULT_WIRED_MODE=y
CONFIG_START_IN_UVC_MODE=y
+1
View File
@@ -60,3 +60,4 @@ CONFIG_LED_EXTERNAL_PWM_FREQ=20000
CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100 CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100
CONFIG_CAMERA_USB_XCLK_FREQ=23000000 CONFIG_CAMERA_USB_XCLK_FREQ=23000000
CONFIG_GENERAL_DEFAULT_WIRED_MODE=y CONFIG_GENERAL_DEFAULT_WIRED_MODE=y
CONFIG_START_IN_UVC_MODE=y
+2 -1
View File
@@ -51,4 +51,5 @@ CONFIG_LED_EXTERNAL_PWM_FREQ=5000
CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100 CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100
CONFIG_LED_EXTERNAL_GPIO=1 CONFIG_LED_EXTERNAL_GPIO=1
CONFIG_CAMERA_USB_XCLK_FREQ=23000000 CONFIG_CAMERA_USB_XCLK_FREQ=23000000
# CONFIG_GENERAL_DEFAULT_WIRED_MODE is not set CONFIG_GENERAL_DEFAULT_WIRED_MODE=y
# CONFIG_START_IN_UVC_MODE is not set
+2 -1
View File
@@ -56,4 +56,5 @@ CONFIG_SPIRAM_SPEED=80
CONFIG_SPIRAM_SPEED_80M=y CONFIG_SPIRAM_SPEED_80M=y
# CONFIG_LED_EXTERNAL_CONTROL is not set # CONFIG_LED_EXTERNAL_CONTROL is not set
CONFIG_CAMERA_USB_XCLK_FREQ=23000000 CONFIG_CAMERA_USB_XCLK_FREQ=23000000
# CONFIG_GENERAL_DEFAULT_WIRED_MODE is not set CONFIG_GENERAL_DEFAULT_WIRED_MODE=y
# CONFIG_START_IN_UVC_MODE is not set