ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. Alex Kushleyev
    3. Posts
    • Profile
    • Following 0
    • Followers 11
    • Topics 1
    • Posts 2072
    • Best 124
    • Controversial 2
    • Groups 1

    Posts made by Alex Kushleyev

    • RE: How to fix the UVC camera DEVICE ID

      @Jskim , maybe it's ok that the Device ID is increasing, however it could mean the USB device is not de-initializing properly (according to the Kernel). Perhaps the device is still open / in use by voxl-uvc-server when you power the camera off (switch to the SD card mode).

      Please see some more information below that may be helpful.

      Fix 1: Configure voxl-uvc-server to identify the camera by Vendor/Product ID

      Instead of relying on the device index, tell voxl-uvc-server to always find your camera by its USB VID:PID. This is the most robust approach.

      Step 1: Find your camera's Vendor ID and Product ID

      lsusb
      

      Look for your UVC webcam in the output. The ID is in VENDOR:PRODUCT hex format, e.g.:

      Bus 001 Device 003: ID 090c:337b  <-- vendor=090c, product=337b
      

      You can also use the ModalAI helper script:

      show-video-device-info.sh
      

      Step 2: Update the voxl-uvc-server service to pass VID/PID

      Edit the systemd service override so the server always targets your specific camera:

      mkdir -p /etc/systemd/system/voxl-uvc-server.service.d/
      cat > /etc/systemd/system/voxl-uvc-server.service.d/override.conf << EOF
      [Service]
      ExecStart=
      ExecStart=/usr/bin/voxl-uvc-server -v <your-vendor-id> -p <your-product-id>
      EOF
      systemctl daemon-reload
      systemctl restart voxl-uvc-server
      

      Replace <your-vendor-id> and <your-product-id> with the hex values from lsusb. With this in place, voxl-uvc-server will find the camera by identity rather than by device node index, so it will survive power cycles without needing a manual restart.


      Fix 2: Create a udev rule for a persistent /dev symlink

      This assigns a stable name (e.g., /dev/uvc_cam) to your camera regardless of enumeration order:

      cat > /etc/udev/rules.d/99-uvc-camera.rules << EOF
      SUBSYSTEM=="video4linux", ATTRS{idVendor}=="<your-vendor-id>", ATTRS{idProduct}=="<your-product-id>", SYMLINK+="uvc_cam", MODE="0660"
      EOF
      udevadm control --reload-rules
      udevadm trigger
      

      After this, /dev/uvc_cam will always point to your camera. You can reference this stable symlink in any configuration.


      Fix 3: Check dmesg for resource leak warnings

      If the device ID keeps incrementing (e.g., /dev/video0 → /dev/video1 → /dev/video2...) rather than re-using the same node, there may be an underlying resource leak from improper de-initialization:

      dmesg | grep -i "uvc\|video\|usb" | tail -50
      

      Look for warnings about disconnection or failed cleanup. If the ID increments indefinitely, this points to a kernel-side resource not being released properly on power-off — that may require a deeper fix or a systemctl stop voxl-uvc-server before powering down the camera.


      Summary

      Step Action
      1 Run lsusb to get your camera's Vendor ID and Product ID
      2 Pass -v <vid> -p <pid> to voxl-uvc-server via a systemd override
      3 Optionally create a udev rule for a stable /dev/uvc_cam symlink
      4 Check dmesg for warnings if the device ID keeps incrementing

      The vendor/product ID approach (Fix 1) should eliminate the need for the manual systemctl restart workaround entirely.

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Starling 2 / VOXL2 M0129 ESC not detected during voxl-esc scan or firmware upgrade

      @syamala-kotireddy ,

      If the ESC is not showing any signs of life (no blue led blink), it probably means the ESC power regulator is not working properly. However, you mentioned that VOXL2 is actually booting fine? Can you measure the voltage on the connector / pads that provide 5V power from M0129 ESC to VOXL2?

      Please see the following post, where a capacitor on the ESC next to the main voltage regulator was knocked off, resulting in ESC not starting up. https://forum.modalai.com/topic/4151/voxl-mini-4-in-1-esc-missing-capacitor/ . However, in that post, i think VOXL2 was not booting either. In your case the issue may be something different.

      It is worth carefully inspecting the ESC.

      Also, if you have a power supply that can measure current, you can set it to 8V and measure the current draw of the ESC alone, it should be very small (maybe 20-30mA) but not zero.

      Alex

      posted in ESCs
      Alex KushleyevA
      Alex Kushleyev
    • RE: Hadron ov64b snapshots have a vertical image artifact

      @restore , the change to enable the maximum resolution raw output for OV64B was made at the end of October 2025, so you would need at least SDK 1.6.0, I believe. There was a change in the camera pipeline (not the camera driver) to allow such a large image size. Are you able to test on a newer SDK (just test the latest if you can)?

      Additionally, the resolution 9248x6944 cannot be directly used in MISP debayering (which uses OpenCL). There are some special requirements on the image stride, which width of 9248 does not match. So what will happen is the cpu will realign the image before feeding it to the gpu, but it is a lot of data to copy for a 64Mpix sensor. So I made a small change in width from 9248 to 9216 (just cut off 32 pixels) and it can be fed into the gpu directly. That change is not published yet, but i can share it.

      Lets first confirm that you can use the 1.6.x SDK to start the camera server at 9248x6944 and you should be able to save raw bayer and view the misp output.

      you can always double check the list of available raw resolutions using voxl-camera-server -l

      by "start the misp output stream", i mean that you need to have a client that subscribes to the misp output stream, so that the frames start going and AE can work, sending exposure and gain updates to the camera, so that the image is properly exposed. For example, viewing the stream in voxl-portal or just using voxl-inspect-cam hires_misp_color to get the data flowing, then you can save the raw bayer, which will have the proper exposure and gain applied.

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Export Controls

      @Michael-Soul , it is EAR99

      posted in Support Request Format for Best Results
      Alex KushleyevA
      Alex Kushleyev
    • RE: Hadron ov64b snapshots have a vertical image artifact

      @restore , a few more things:

      • you should set the auto exposure to lme_msv, which is the non-isp option, since we would not be using isp in this case
      • before saving the raw bayer, start the misp output stream, so that AE can actually process, otherwise the exposure will be stuck in default value -- the bayer stream does not trigger AE to process.

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Hadron ov64b snapshots have a vertical image artifact

      @restore, that is strange. Does this effect appear in the jpeg snapshot only? (as opposed to the preview stream).

      Yes, we do support saving raw bayer10 for this camera. For 9248 x 6944, each image would be something like 80MB (10-bit bayer)

      In order to test it,

      • set your preview width and height to 9248 x 6944
      • en_raw_preview : true
      • en_snapshot : false (for now)
      • en_misp : true
      • set misp width and height to something reasonable (1920x1080)

      When you run it, assuming there are no errors, you should see hires_bayer pipe and you can dump individual images using voxl-record-raw-image tool.

      I have not tested this in a while, but it should work. Let me know if you run into any issues.

      Also, please use an SDK that is not older than few months, as we recently enabled the full raw resolution support for this camera.

      Regarding the jpeg smoothing, the parameters are baked into the chromatix tuning file and we have not tuned that for any particular application. However, you should first check whether the jpeg encode quality is sufficiently high. snapshot_jpeg_quality param in your voxl-camera-server.conf is set to 75.

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Moving functions from J19 legacy or high speed B2B

      @austin-c , The GPS driver is built for SLPI as well as APPS PROC, so you could connect it to a apps-proc UART and start the driver on the apps proc side of PX4.

      This was done on RB5 : https://docs.modalai.com/Qualcomm-Flight-RB5-linux-user-guide/

      https://docs.modalai.com/voxl2-linux-user-guide/

      Regarding magnetometer, just like with the GPS driver, you should be able to enable the mag driver to build for apps proc. Since the apps proc i2c uses standard posix interface, it should just work. However, i don't think we have ever tried it.

      Alex

      posted in VOXL 2
      Alex KushleyevA
      Alex Kushleyev
    • RE: M0166 STEP File and 2D Diagram

      @ktrieu , you can find the STEP file for the M0166 camera module here : https://docs.modalai.com/pcb-catalog/

      posted in 3D Models
      Alex KushleyevA
      Alex Kushleyev
    • RE: Starling 2 / VOXL2 M0129 ESC not detected during voxl-esc scan or firmware upgrade

      @syamala-kotireddy ,

      If your M0129 ESC only has a label that says M0129, it most likely means it is M012-3. The only difference between -3 and -6 is that -6 is rated for 6S battery voltage (which is irrelevant for Starling 2).

      Was the ESC working? How did it get into non-working state?

      Please make sure PX4 is not running before you use the voxl-esc tools : systemctl stop voxl-px4. You should reboot, disable voxl-px4 and try to use voxl-esc tools directly from /usr/share/modalai/voxl-esc/

      In order to test if the ESC itself is working, the best way to connect it directly to a Linux PC using a serial-to-usb adapter and use voxl-esc to scan, test, etc. You can make your own adapter or purchase one here.

      Also, double check if the status of ESC LEDs when you turn on the power. Additionally, does the ESC make motor sounds? See additional debugging information here : https://docs.modalai.com/voxl-escs/faq/

      Alex

      posted in ESCs
      Alex KushleyevA
      Alex Kushleyev
    • RE: How to fix the UVC camera DEVICE ID

      @Jskim , you should check dmesg to see maybe there are some warnings. Perhaps the device is not de-initialized properly (how are you powering it off?) and next time the OS allocates a new Device ID.

      Either way, using udev rule should help resolve the issue, however make sure there is no resource leak as a result of the device on/off. Also, if you keep turning the device on/off, does the device ID increment indefinitely?

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Ubuntu 20.04

      @fhaltmayer , unfortunately, we do not have any updates at this time. It looks like we may never release Ubuntu 20.04 for VOXL2 because it is a LOT of work to switch to a new major Ubuntu release and test + maintain everything. Additionally, even Ubuntu 20.04 is already relatively old, so we are trying to focus our efforts on more forward-looking software development with larger impact.

      Alex

      posted in VOXL SDK
      Alex KushleyevA
      Alex Kushleyev
    • RE: Continuous bench supply with VOXL FPV Racing 4-in-1 ESC (M0138) — braking disable + TVS protection guidance

      Hi @austin-c ,

      You can find the latest M0138 firmware with regen completely disabled here

      Also, I added the esc config that i've been using for testing here

      For step tests, i have been using pretty aggressive step command:

      ./voxl-esc-spin-step.py --id 2 --rpm 2000 --step-amplitude 4000 --step-frequency 2.0 --timeout 2.0 --cmd-rate 2000 --enable-plot 1
      

      In order to make the ESC not de-sync (due to long demag time of the motor), the following params were adjusted:

      • max_rpm_delta set to 4000 (you can go lower), to cap the maximum rpm transitions. Although in my test, the step is 4000, so this had no effect
      • timing_advance: 45 -- this is pretty high commutation advance to trigger commutation earlier so that there is more time for back-emf sensing -- high advance wiil reduce motor efficiency and will cause the motor to heat up a bit more
      • sense_advance: 30 -- delay back-emf sensing so that we don't sample back-emf during the motor coil demagnetization
      • more details : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/blob/dev/voxl-esc-tools/doc/low_kv_motor_tuning.md

      I had another thought.. What if you use a small battery to absorb the voltage spikes? Basically hook up a 6-7S battery with a beefy Schottyky diode (10A) set up with Cathode (negative) pointing to the battery.

      • you will have to make sure the power supply voltage never exceeds battery voltage + diode drop.
      • you will also need to make sure that you don't over-charge the battery with repeated spike absorption.. It is possible to have some sort of self-discharge circuit to slowly discharge the battery to a certain voltage (using a Zener diode + resistor or something similar).

      Anyway, just an idea..

      Try out the no-regen firmware..

      Alex

      posted in ESCs
      Alex KushleyevA
      Alex Kushleyev
    • RE: IMX412 not detecting

      @fhaltmayer , it looks like there maybe something missing from /usr/lib/camera/, as the camera is detected by the i2c probe but not accepted by the system.

      Can you please let me know how exactly the camera is connected (to camera slot/id 2, it seems) and also list all the contents of /usr/lib/camera/.

      Alex

      posted in Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Running 4 Ar0144s on M0188

      @cbay , yes this should work.

      Whenever you add cameras of the same type, you should always check for possible I2C (CCI) conflicts. If you look here https://docs.modalai.com/M0188/#image-sensor-interfaces , the sensor IDs 0,2,3,6 (which is what you use) use unique CCI buses 0-3, so that is all good.

      If you used ID 1, it would conflict with with another AR0144 on ID6 (both use CCI1)

      One last thing to check is the sensor sync.

      • if you see fsin in the configuration of the sensor (and name of the sensormodule in /usr/lib/camera/), it means it is set up as a sync slave
      • currently you have the IDs 0 and 6 set up as sync slaves, but ID 2 and 3 as free-running

      There are two issues enabling sync'ed drivers for AR0144 in ID 2 and 3:

      • the driver is provided only for ID2 in : /usr/share/modalai/chi-cdk/ar0144-fsin/ - this is easy to fix
      • ID1 and ID3 on M0188 do not have the sync line connected to the camera connector
        • this is easy to fix by installing a 0-ohm resistor, which is DNI by default.

      Depending on your requirements for VIO (which VIO are you using?), you may or may not need the cameras synchronized.

      Please let me know your requirements and we can go from there..

      Alex

      posted in VOXL 2 Mini
      Alex KushleyevA
      Alex Kushleyev
    • RE: Starling 2 GPS

      Hello @adam , please see the following post regarding GPS signal quality on Starling 2 and Starling 2 Max : https://forum.modalai.com/topic/5116/gnss-emi-mitigation-guidelines

      There is no voxl-gps service - voxl-px4 handles the GPS functionality, so as long as that is running, the GPS module should be active. Please go through the documentation linked above, there are some mitigation steps that are relatively easy to implement.

      We apologize for the inconvenience, but enabling usable GPS on Starling 2 will require some tweaks.

      Alex

      posted in Ask your questions right here!
      Alex KushleyevA
      Alex Kushleyev
    • RE: Starling 2 Max Motor Catches

      @RyanH ,

      Sometimes there is small pieces of random magnetic debris that gets stuck in the motor.

      First, you could try using compressed air to clear out the motor.

      Additionally, It could help to spin the motor up and down using voxl-esc command line tools a few times to clear it out (without prop is best, just for safety). Spinning the motor without prop a bunch of times could get the debris dislodged and actually broken up by the moving motor parts, so that the debris is no longer large enough to cause a problem. Reversing motor spin using voxl-esc test tools can help dislodge the debris (you can commend negative power/rpm).

      You can find useful info regarding motor testing here : https://docs.modalai.com/voxl-escs/faq/

      Alex

      posted in Starling & Starling 2
      Alex KushleyevA
      Alex Kushleyev
    • RE: Request for Updated Guidance on Starling 2 GPS Issue

      @groupo , thank you for the feedback and offer to help. Yes, please send us an email with some more details and we can discuss if there is an opportunity to collaborate.

      Alex

      posted in Starling & Starling 2
      Alex KushleyevA
      Alex Kushleyev
    • RE: Accessories

      @Roy-Azriel , the description of Starling 2 Max states that it uses VOXL2, as well as lists other major components and options for camera configurations : https://www.modalai.com/products/starling-2-max?variant=48216084087088

      Please let us know what Lidar you are considering adding.

      Alex

      posted in Starling & Starling 2
      Alex KushleyevA
      Alex Kushleyev
    • RE: TOF sensor flex cable replacement

      @aheyne , please send us a message via contact form. We don't sell this part separately as a product, but will help you with a replacement.

      You will need the M0177 flex cable (as the print states on the cable).

      https://www.modalai.com/pages/contact-us

      Alex

      posted in Starling & Starling 2
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL2 Mini – Royale createDevice failed when starting ToF camera

      @Piyush-Singh , can you please provide more details

      • how exactly all cameras are connected to VOXL2 mini (including interposers, flexes), etc. A diagram would help a lot
      • which kernel variant are you running on your voxl2 mini (2.0.0 or 2.0.2).

      Are all the other cameras working if you disable the TOF sensor in the camera server config?

      Alex

      posted in Ask your questions right here!
      Alex KushleyevA
      Alex Kushleyev