From its official website, clearly, OctoPrint is an operating system for 3D Printing. Its capabilities can be extended to other manufacturing fields. Specifically, OctoPi will work on a Raspberry Pi.
You got to login OctoPi locally for the FIRST time, instead of remotely, for the NetworkManager service is NOT started by default. Namely, there is NO Wi-Fi by default. Well, you can ALWAYS use the wired connection of course.
$ lsusb | grep Microsoft Bus 009 Device 015: ID 045e:02d9 Microsoft Corp. NuiSensor Adaptor Bus 010 Device 005: ID 045e:02d9 Microsoft Corp. NuiSensor Adaptor Bus 010 Device 006: ID 045e:02c4 Microsoft Corp. Xbox NUI Sensor
Note: by installing libopenni2-dev and openni2-utils from default repo, you’re going to have the above rule primesense-usb.rules installed under /usr/lib/udev/rules.d, instead of /etc/udev/rules.d.
and you will have the following two libraries built out:
1 2
lib/libfreenect2-openni2.so lib/libfreenect2.so
And, if needed, after the installation of libfreenect2, manually copy libfreenect2-openni2.so under folder /usr/local/lib/OpenNI2/Drivers. Now, ALL set. You’re good to go NiViewer.
I got NO idea why ./bin/Protonect cuda failed to run ALL the time. Then, I created a simple Python script verify_cuda.py and ALWAYS meet the following error:
1 2 3 4 5
$ python verify_cuda.py [Info] [CudaDepthPacketProcessorImpl] device 0: NVIDIA GeForce RTX 3090 @ 1725MHz Memory 24219MB [Info] [CudaDepthPacketProcessorImpl] selected device 0 [Error] [CudaDepthPacketProcessorImpl] cudaGetLastError(): the provided PTX was compiled with an unsupported toolchain. CudaPacketPipeline is available.
Finally, I found the reason: Cuda version is NOT synced with NVidia driver version. More specifically, in my case:
To solve this problem, install NVidia driver during the installation of Cuda. Namely: when run cuda_12.5.1_555.42.06_linux.run, tick
1 2
- [X] Driver │ │ [X] 555.42.06
You may have to reboot into text mode and have all previously-installed NVidia driver unloaded. For this issue, please refer to How to unload kernel module ‘nvidia-drm’?
➜ ~ lsusb | grep Microsoft Bus 002 Device 003: ID 045e:02c4 Microsoft Corp. Bus 002 Device 002: ID 045e:02d9 Microsoft Corp. NuiSensor Adaptor Bus 001 Device 002: ID 045e:02d9 Microsoft Corp. NuiSensor Adaptor
➜ ~ cat /proc/cpuinfo processor : 0 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x1 CPU part : 0xd07 CPU revision : 1
processor : 1 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x1 CPU part : 0xd07 CPU revision : 1
processor : 2 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x1 CPU part : 0xd07 CPU revision : 1
processor : 3 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x1 CPU part : 0xd07 CPU revision : 1
➜ ~ cat /proc/cpuinfo processor : 0 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x1 CPU part : 0xd07 CPU revision : 1
processor : 1 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x1 CPU part : 0xd07 CPU revision : 1
processor : 2 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x1 CPU part : 0xd07 CPU revision : 1
processor : 3 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x1 CPU part : 0xd07 CPU revision : 1
➜ ~ cat /proc/cpuinfo processor : 0 model name : ARMv8 Processor rev 0 (v8l) BogoMIPS : 62.50 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp CPU implementer : 0x4e CPU architecture: 8 CPU variant : 0x0 CPU part : 0x004 CPU revision : 0 MTS version : 50168445
processor : 1 model name : ARMv8 Processor rev 0 (v8l) BogoMIPS : 62.50 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp CPU implementer : 0x4e CPU architecture: 8 CPU variant : 0x0 CPU part : 0x004 CPU revision : 0 MTS version : 50168445
processor : 2 model name : ARMv8 Processor rev 0 (v8l) BogoMIPS : 62.50 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp CPU implementer : 0x4e CPU architecture: 8 CPU variant : 0x0 CPU part : 0x004 CPU revision : 0 MTS version : 50168445
processor : 3 model name : ARMv8 Processor rev 0 (v8l) BogoMIPS : 62.50 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp CPU implementer : 0x4e CPU architecture: 8 CPU variant : 0x0 CPU part : 0x004 CPU revision : 0 MTS version : 50168445
processor : 4 model name : ARMv8 Processor rev 0 (v8l) BogoMIPS : 62.50 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp CPU implementer : 0x4e CPU architecture: 8 CPU variant : 0x0 CPU part : 0x004 CPU revision : 0 MTS version : 50168445
processor : 5 model name : ARMv8 Processor rev 0 (v8l) BogoMIPS : 62.50 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp CPU implementer : 0x4e CPU architecture: 8 CPU variant : 0x0 CPU part : 0x004 CPU revision : 0 MTS version : 50168445
17313+0 records in 17313+0 records out 18153996288 bytes (18 GB, 17 GiB) copied, 1617.17 s, 11.2 MB/s
However, Jetson AGX Xavier is NOT booting, but ONLY black screen.
The answer is at NVidia Forum Issue 189348 - Black Screen: Do you know that you are talking about AGX Xavier but not NX? Only NX and Nano have and support sdcard image. Other platforms do not. It’s also clearly clarified in the table on NVidia’s official page: NVidia SDK Manager.
However, when we run k4aviewer, it still shows No Available Devices.
1 2 3 4 5
$ lsusb | grep Azure Bus 009 Device 007: ID 045e:097b Microsoft Corp. Generic Hub [Azure Kinect] Bus 009 Device 008: ID 045e:097d Microsoft Corp. Azure Kinect 4K Camera Bus 009 Device 009: ID 045e:097c Microsoft Corp. Azure Kinect Depth Camera Bus 009 Device 010: ID 045e:097e Microsoft Corp. Azure Kinect Microphone Array
No Available Devices
No Available Devices, Errors
3.2.2 Detect Okay And Run Successfully
Fortunately, I got one cable working partially perperly, but lsusb failed to detect Azure Kinect DK‘s Microphone Array.
1 2 3 4
$ lsusb | grep -i Azure Bus 010 Device 002: ID 045e:097a Microsoft Corp. Generic Superspeed Hub [Azure Kinect] Bus 010 Device 003: ID 045e:097c Microsoft Corp. Azure Kinect Depth Camera Bus 010 Device 004: ID 045e:097d Microsoft Corp. Azure Kinect 4K Camera
Luckily, I found a cable, which is able to detect ALL of the following:
1 2 3 4 5 6
$ lsusb | grep Azure Bus 001 Device 010: ID 045e:097b Microsoft Corp. Generic Hub [Azure Kinect] Bus 001 Device 011: ID 045e:097e Microsoft Corp. Azure Kinect Microphone Array Bus 002 Device 014: ID 045e:097a Microsoft Corp. Generic Superspeed Hub [Azure Kinect] Bus 002 Device 015: ID 045e:097c Microsoft Corp. Azure Kinect Depth Camera Bus 002 Device 016: ID 045e:097d Microsoft Corp. Azure Kinect 4K Camera
3.4 4K Camera Is Working Fine Like An Independent UVC Camera
1 2 3 4 5 6 7 8
$ v4l2-ctl --list-devices
Azure Kinect 4K Camera (usb-0000:05:00.3-2.1): /dev/video1 /dev/video2 /dev/media0
Cannot open device /dev/video0, exiting.
It can be simpilied decmonstrated that GUVCView is able to successfully detect Bus 002 Device 016: ID 045e:097d Microsoft Corp. Azure Kinect 4K Camera as a UVC Camera and carry out the real-time streaming.
Again, amazing China. This time, Nanjing. What a city!!!!!
Ancient Qinhuai @ Qinhuai River, Nanjing
Ancient Qinhuai @ Qinhuai River, Nanjing
Raspberry Pi has already well-established a comprehensive community support world wide. Among ALL the operating systems supporting Raspberry Pi, Home Assistant stands out, shining brightly as an open-source home automation operating system in the field of IoT.
Home Assistant is the ``open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.’’ (cited from first page of the official website of Home Assistant.)
Home Assistant OS is a minimal operating system optimized for running Home Assistant, and it does not use traditional package management systems like apt. Instead, it relies on Docker containers to manage and run services, including Home Assistant and its add-ons.
Please ensure the following 2 boards support have been installed successfully.
3.2 CameraWebServer
Current ESP32 Examples provide an webcam server example: ESP32 Example CameraWebServer. Or, we can simply open up the example from within Arduino IDE: File->Examples->ESP32->Camera->CameraWebServer.
Both are compatible with the configuration CAMERA_MODEL_AI_THINKER in ESP32 Example CameraWebServer. Therefore, three places are to be correctly setup:
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
const char *ssid = "XXXXXXXXX";
const char *password = "YYYYYYYYY";
3.2.2 Verify and Upload
3.2.3 Demonstration
However, as you can see, the captured image is not quite stable. And, I did find the WiFi connection is easy to get disconnected. What to do???
[!NOTE:] What to do??? Please continue reading.
3.3 RTSP with MJPEG
As of today, June 4, 2024, there is NOH.264 or H.265 streaming server support. Therefore, I’m going to follow the following 2 blogs and build up RTSP server with MJPEG video streams.
I got a LicheeRV Nano before I left China for Canada a couple of weeks ago. Nowadays China is amazing. Let’s take a look at my hometown Wuhan of year 2024.
➜ LicheeRV-Nano-Build git:(main) ✗ source build/cvisetup.sh /proc/self/fd/19:7: cv1800b_board_sel: assignment to invalid subscript range ------------------------------------------------------------------------------------------------------- Usage: (1) menuconfig - Use menu to configure your board. ex: $ menuconfig
Fix eth0’s MAC address. For the wired connection on this particular small SBC Milk-V Duo 256M, I’d strongly recommend to use the physical MAC address for eth0, rather than a dynamic one. Whenever rebooting, Milk-V Duo 256M will change its MAC address, as well as the IP address, which is seriously NOT what I expected. Therefore, what we need to do is to modify file /etc/network/interfaces as suggested by StackExchange issue Change Mac Address permanently inside /etc/network/interfaces:
Even if I strictly followed the manual on duo-buildroot-sdk‘s official documentation Compiled using Ubuntu 22.04, I still failed to build an image out for flashing, with the following error messages inside the log file build/br.log:
After flashing the generated out/milkv-duo256m-20240208-1949.img into the SD card, we can now boot up Milk-V Duo 256M by connecting it with my laptop via a USB cable.
3.1 lsusb
1 2 3
...... Bus 001 Device 009: ID 3346:1009 Cvitek RNDIS ......
ESP32-S3is a dual-core XTensa LX7 MCU, capable of running at 240 MHz. Apart from its 512 KB of internal SRAM, it also comes with integrated 2.4 GHz, 802.11 b/g/n Wi-Fi and Bluetooth 5 (LE) connectivity that provides long-range support. (Cite from Espressif‘s official online doc ESP32-S3).