Jump to content

sgjava

Members
  • Posts

    411
  • Joined

  • Last visited

Everything posted by sgjava

  1. https://redirect.armbian.com/nanopiduo/Focal_current Tried to flash a couple of times, but it never makes it to the heartbeat led. Will try other releases. This one boots https://armbian.systemonachip.net/archive/nanopiduo/archive/Armbian_21.05.1_Nanopiduo_focal_current_5.10.34.img.xz
  2. Java Periphery is a high performance library for GPIO, LED, PWM, SPI, I2C, MMIO and Serial peripheral I/O interface access in userspace Linux. Rather than try to build this from scratch I used c-periphery and HawtJNI to generate the JNI wrappers. This saves a lot of hand coding and allows for easier synchronization with c-periphery changes moving forward. I believe this is the only userspace IO library that supports the new JDK 17 LTS (and still supports JDK 11). I had to fork HawtJNI to make it work with JDK 17. The only caveat is that ARM32 supports JDK 11. For some reason I cannot find a JDK 17 for ARM32 or information on why is was not supported. The install script handles this automatically. ARM64/x86/x86_64 uses JDK 17.
  3. I agree, but I went with Annke 4K cameras at around $80 US. So far, so good.
  4. I'm running the latest XU4 focal and ffmpeg doesn't support the latest H265+ codec even though I'm only doing a copy (no transcoding). Is there a way to build latest ffmpeg without losing hardware accelration? [rtsp @ 0x556f60] [warning] Multi-layer HEVC coding is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented. BOARD=odroidxu4 BOARD_NAME="Odroid XU4" BOARDFAMILY=odroidxu4 BUILD_REPOSITORY_URL=https://github.com/armbian/build BUILD_REPOSITORY_COMMIT=428a20876-dirty DISTRIBUTION_CODENAME=focal DISTRIBUTION_STATUS=supported VERSION=21.05.6 LINUXFAMILY=odroidxu4 ARCH=arm IMAGE_TYPE=stable BOARD_TYPE=conf INITRD_ARCH=arm KERNEL_IMAGE_TYPE=Image BRANCH=current
  5. OK, so here's what looks like is happening. Based on the system load eventually the NICs will go offline. I used the 5V8A PSU and saw no difference. What I will most likely do is split 3 4K cams per XU4 or use one for rtsp/mjpeg proxy and one to do detection recording. As a proxy there very little CPU, system load, etc.
  6. I'll report back once I see the issue resolved. I think a couple days was the maximum time without losing the NICs.
  7. 6A PSU https://www.hardkernel.com/shop/5v-6a-power-supply-unit/ When you connect an external 2.5inch HDD/SSD to XU4 or using the CloudShell, the bundle 5V/4A power supply is not enough to supply stable power. We strongly recommend to use this 5V/6A PSU to improve the system stability. So maybe my PSU theory is correct. Would also explain where there's really nothing in the logs. Just ordered this guy. No use troubleshooting a software problem until I rule out hardware https://www.amazon.com/gp/product/B07H9X8FHM
  8. Yeah, looks like https://github.com/aler9/rtsp-simple-server might have some issues, but that shouldn't kill the NICs. Memory averages around 1.3G free which is excellent for 5 4K cameras. Nothing obvious sticks out. I have a SSD and 1G Ethernet dongle connected to USB 3. I believe I have a 4A power supply. I have another XU4 with 2 SSDs on USB 3 that works fine, but has less network activity (like 20 Mbps). The weird thing is the heartbeat is till cranking and I have to power cycle to get NICs back. If it makes any difference I have 5 to 7 ffmpeg processes running all the time. Processes average around 150. I didn't tweak any kernel parameters. Anyways, I tried swapping power supplies with another board just for the heck of it.
  9. What should I be looking for in output? dmesg.txt
  10. Howdy, I'm running Armbian_21.05.1_Odroidxu4_focal_current_5.4.116.img on my XU4 for security cameras. It averages about 60 Mbps 24/7. After a couple days usually one adapter disappears (from ip a and nmtui) and sometimes both (I have a USB 1 Gbps adapter too). I'm not seeing anything in the logs to indicate an error. I monitor this system with Zabbix and I see no unusual activity before this happens. Is there a way to get diagnostics for this event?
  11. OK, so I have things dialed in a bit better now. FFMPEG seems to like TCP over UDP for these streams. I'm seeing a lot less artifacts in the videos. Below is 12 hours of network and CPU activity for 3 4K cams at 12.5 FPS and 1 4K cam at 15 FPS (four 4K cams total) at highest quality. CPU seems to max out around 10% per camera and network maxes out around 45 mb total. I'm using a 1G PoE switch, so the bandwidth will never be an issue. The question then becomes how much more real-time processing can I do. CV routines are typically expensive even though I've learned tricks using ROI (region of interest). This isn't as much of a problem with a single camera, but I'm planning on six cameras. Obviously the most important thing for me now is to capture motion videos. Once the bread and butter stuff is done then I can look at adding various detection code (besides motion). The question becomes do I want real-time detection or perhaps offload that to another SBC. The fact that I can record this many 4K cameras with an Odroid XU4 is pretty amazing. Look at Blue Iris requirements https://ipcamtalk.com/wiki/choosing-hardware-for-blue-iris/ and this really doesn't cover electrical costs and heat dissipation. I'm working on a Pine 64 today with USB cam, so I'll test single camera encoding. Basically the code will scale to many cameras or a single camera.
  12. So I have two 4K @ 12 FPS cameras that stream to a buffer file. Currently I'm only doing motion detection, but that drives everything else obviously detection wise. On an Odroid XU4 each camera uses only 10%. Motion videos are just copied from the buffer file. I'm using H265+ without any transcoding. So far so good. Not quite ready to post up to github yet though. I doubt you get better CPU utilization than this. I'm using the substream at 4 FPS 640x480 for motion detection. One other thing to note is I proxy mjpeg and h265+ streams, so for cameras that only allow one stream you can have security software running and still stream live. I'm using PoE cameras and will have six 4K cameras running soon. So in essence you can build a cheap NVR without the hardware requirements of Blue Iris etal or just build a single smart camera. Armbian allows hardware encoding with ffmpeg on some models, so you can even encode USB cams with low overhead.
  13. Looks like I'm answering my own question again I took a chance on https://www.amazon.com/gp/product/B087QFQW6F and it worked out of the box. Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
  14. I have a need for an additional 1G Ethernet connection on my XU4 running latest Armbian. Any recommendations?
  15. This is a good review of security software for Linux https://blog.jasonantman.com/2018/05/linux-surveillance-camera-software-evaluation. The funny thing is this guy went with Motion which is terrible and the reason I wrote https://github.com/sgjava/motiondetector. This time however I'm probably going down the Java route as I have a lot of the pieces already written in another project. I want intelligent motion detection, object classification (CV), etc. The core stuff is most important. The viewer, etc. is not really that important at this point. Any ways, I'm playing with https://github.com/kokorin/Jaffree since XU4 has hardware encoding/decoding built in ffmpeg (other Armbian supported boards do too). OpenCV can also use ffmpeg. Like I mentioned above the trick is not to decode/encode the camera stream from H264. On another thread I'd read an MJPEG stream at 3 FPS which is low bandwidth to decode into numpy array OpenCV can deal with. That's where you do the motion detection, pedestrian detection, etc. Once a threshold is met then you use ffmpeg to save the stream to a MKV container. At this point I'm just playing around with different libraries, but it would have been nice to get something that's not ancient like Motion and ZoneMinder or newer stuff that cannot handle motion/object detection in a decent manner.
  16. I'll post a link later where various Linux compatible software was evaluated. I found a Java ffmpeg wrapper. I have built this stuff from scratch before and all these packages suck at the core functions. Health checks, etc. needs to be done, etc.
  17. OK, so if you know me I don't wait around for answers. I took an old h264 camera Edimax Triple Mode Plug-n-View Internet IP Camera Supports PoE Function 1.3MP H.264 Mode and E-Cloud Technologynology (IC-3100P) updated the firmware and loaded up an Odroid XU4 since ffmpeg uses hardware encode/decode out of the box. The trick is to not decode/encode the stream and save to a mkv container. 1280x1024 @ 15 fps uses < 2% cpu. What I can do is use the MJPEG stream at like 3 FPS for motion and computer vision processing. I didn't want to code anything, so I'll start looking at security software next. The ffmpeg command I used was: fmpeg -i rtsp://hostname:554/ipcam_h264.sdp -frames:v 200 -acodec copy -vcodec copy test.mkv I also tested decoding/encoding a 2K video which used ~30% CPU
  18. I've built my own security cameras for about 8 years (using computer vision, ML, etc.), but now I want to do something off the shelf so to speak. I just wired my attic to my office with cat 6 cable and my house is wired with cat5e, More than likely the cameras will be plugged directly into the SBC from the attic via PoE. My question is which SBC would be able to handle hardware H265 decoding using 4K cameras at 30 fps? That's about 27 Mbps per camera times 4 cameras. iperf test from my attic showed 961 Mbps using ODroid XU4. So my questions are: Which SBC can handle H265 hardware decoding of four 4K cameras? I want to have 2 1Gbps ports, so I can have cameras on different network from my primary network. What software do you use for security/DVR? Thank you for suggestions.
  19. @martinayotte I'm doing it this way https://github.com/sgjava/patchbian since the build creates the patch for you and a test image at the same time.
  20. @martinayotteI understand the patch part, but usually you make the change somewhere like build/cache/sources/linux-odroidxu4/odroid-5.4.y/arch/arm/boot/dts/exynos5420-pinctrl.dtsi (for XU3/XU4) and a patch is generated in output/patch. This is the step I'm missing. Almost there, thanks for your help do far.
  21. @martinayotteOK, I figured out the syntax for each pinctrl using phandle to identify. So next question is how do I make this part of build process, so it gets applied automatically in img? Duo: /dts-v1/; /plugin/; / { compatible = "allwinner,sun8i-h3-pinctrl"; fragment@0 { target = <0x0b>; __overlay__ { gpio-line-names = "", "", "", "", "GPIOA4 DTX", "GPIOA5 DRX", "", "", "", "", "", "GPIOA11 SCL", "GPIOA12 SDA", "GPIOA13 CS", "GPIOA14 CLK", "GPIOA15 MO", "GPIOA16 MI", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "GPIOG6 TX1", "GPIOG7 RX1", "", "", "", "GPIOG11 IOG11"; }; }; fragment@1 { target = <0x3b>; __overlay__ { gpio-line-names = "", "", "", "BUTTON", "", "", "", "", "", "", "", "GPIOL11 IRRX"; }; }; };
  22. How does it know which pinctrl to place the line names?
  23. Yes, I'm wondering is that another fragment section in one file or another file?
  24. No worries, I still need to find a way to cover both pin controllers? It appears compatible strings are different.
  25. Ah wrong location. You need to put dtbo in /boot/dtb/overlay, not /boot/dts/overlay as you suggested above.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines