Jump to content

ag123

Members
  • Posts

    365
  • Joined

  • Last visited

Posts posted by ag123

  1. @Cancer

    if NetworkManager is masked I'd unmask that for use with netplan e.g.

    systemctl unmask NetworkManager
    systemctl enable NetworkManager
    systemctl start NetworkManager

     

    In the 'minimal IOT' images for OrangePi Zero 3, NetworkManager is not shipped with my images. I'd need to install that myself. Perhaps for other boards or images, NetworkManager could have been included by default. (but like you mentioned masked)

     

    in my /etc/netplan/configfile.yaml , I configured it as like that 3 lines, removed other liines so that I used NetworkManager utilities to configure the interfaces. I think that is 'simplier' than fumbling with netplan yaml configs which I'm unfamiliar as well.

    I'm actually running a Wifi AP, but that the AP itself is not managed by NetworkManager, it is managed by hostapd, 
    as given prior

    https://gist.github.com/ag88/de02933ba65500376d1ff48e504b1bf3

    I prefer hostapd as like discussed with @bushw, I think NetworkManager WiFi  AP uses dnsmasq by default and setup a NAT (i.e. configures firewall rules for NAT masquerade)
    https://thekelleys.org.uk/dnsmasq/doc.html

    and a dhcp server to distribute ip address to the Wifi clients. While this works, it may not be the configuration I prefer.
    The other thing is hostapd logs every wifi connection in journalctl logs, that is something I specifically want, so that I can check the connections if need be.
    NetworkManager it seemed do not log the connection attempts at the AP. 

    As to the rational that NetworkManager WiFi AP uses dnsmasq and setup NAT, 'mess with firewall rules', I think that is  because it is a 'canonical' configuration that 'just works'.
    Because otherwise you need to consider routing , bridging , whether to run dhcp server etc which don't have any standard setup for a 'WiFI AP' based network. 
    I.e. the config is specific and unique to your network configuration (the whole physical network, not just the board) and you need to configure that manually, e.g. with using hostapd.
    you can build 'very complex' networks if you bother to go the distance, e.g. to do routing, ipv6, special NAT, special firewalling etc, to the extend if you have the skill, I think you can even configure clients to 'roam' across WiFI APs in your network, that is not 'mesh' but rather a full 'autoroam' setup of network configs. but everything is manual, custom and specific / unique to your physical network.

     

    on a different off-topic note, my WiFI AP (hotspot) that I configured as described in the gist has been running (very) well on my OrangePi Zero 3 'for months' practically as a desktop WiFI AP.
    Throughput is good (I get  slightly above 100 Mbps due to OrangePi Zero 3 having a good wifi chip), Armbian runs well on it, and I even run various apps on it.

    e.g. I managed to run rpi-monitor on it

     

    there is a thread about OrangePi Zero 3

    but that it seemed for the edge kernels and images, there may be 'some troubles', I've not tried it though.
    I'm not sure if it affects the 'stable' images, hopefully that the 'stable' images which is a bit older in terms of kernel releases are still ok.

     

  2. @Cancer
    Netplan is from Canonical, so I'd guess ubuntu would likely use a similar setup
    https://netplan.io/
    https://netplan.readthedocs.io/en/stable/netplan-tutorial/#running-netplan-for-the-first-time
    https://docs.armbian.com/User-Guide_Networking/

    and the  renderers can be NetworkManager or Systemd-Networkd as described in their pages as well.

     

    The setup is less than intuitive, but that I'm more familiar with NetworkManager.

    What I did instead is that, for my netplan config

    /etc/netplan/10-dhcp-all-interfaces.yaml:

    
    network:
      version: 2
      renderer: NetworkManager # Different than 'networkd'

     

    I only used a 'minimal' config as like above. That would make it use NetworkManager as the renderer.

     

    I think it is also necessary to install NetworkManager for some e.g. 'minimal IOT' images

    apt install NetworkManager

     

    Then that if you are running it with a keyboard, monitor with gnome graphical interface

    you can use a gui editor like

    nm-connection-editor 

    network-manager-applet

    https://wiki.archlinux.org/title/NetworkManager

    to setup the network configs, the Gui is kind of 'guided' and tends to be 'easier' for beginners.

     

    if you don't have that I think there is 

    nmtui  - text based with (ncurses) menus

    nmcli - command line cli configs

     

    if you are using nmcli  say operating from a text console, there are some tutorials you may find through a web (e.g. google) search

    https://www.cyberciti.biz/faq/redhat-network-interface-configuration/

    https://www.tecmint.com/nmcli-configure-network-connection/

    https://www.cyberciti.biz/faq/how-to-add-network-bridge-with-nmcli-networkmanager-on-linux/

    https://dev.to/faaiq_amarullah/managing-networking-based-on-rhel-8-202e

     

     

    in general, while editing network interfaces, I take 'ample precautions' and operate over the serial debug console (using a usb-uart dongle), as you may get 'locked out' if you are in one of the network connections that you are editing. If you are using a full desktop say with a monitor and keyboard, that's ok as well.

     

    I think the 'iot minimal' images some of those use Systemd-Networkd as default, so some of the setup may still be in Systemd e.g. Systemd-resolved.

    That could affect your DNS resolver configs, what I did is I googled for configs about Systemd-resolved and maintained my primary and secondary (DNS) nameservers in

    /etc/systemd/resolved.conf
    I'm not too sure if that is after all necessary.

     

    NetworkManager is 'higher level' than configuration commands as like ip or ifconfig, in a sense that it 'manages' the interfaces. while ip and ipconfig are normally per-invocation command, NetworkManager stores its setup in /etc/NetworkManager. One should normally use the gui or nmcli / nmtui commands to configure them instead of editing the files directly. And remember to save the configs as permanent instead of temporary while using the gui, nmcli or nmtui. With that normally the configs will persist across reboots. This is probably more organised perhaps 'simplier' than say editing scripts say using the 'old' way say in /etc/interfaces.

     

    After you configured interfaces e.g. with nmcli, nmtui or the gui editors, normally to check status of the interfaces you could run commands like

    nmcli c show (show connections)
    nmdli d status (show devices)

     etc to show the state of interfaces configured by NetworkManager.

     

    the 'lower level' commands like ip  (or ifconfig (apt install net-tools to get that) 

    ip link (show link status)
    ip a (show addresses)

    can also be used to check on the status of the intefaces.

     

    listing wifi APs I think is

    nmcli d wifi list

     

    connecting to an AP I think is

    nmcli d connect SSID password "wifipassword" name a_name_for_this_connection ifname wlan0

    note that there are options for reconnect, normally it does that, if that is not desired you may need to edit that say via nmcli c edit connection etc

  3. @bushw
     

    Quote

    Just implement "mode: ap" in netplan config and check your iptables chains

     

    ok this is what i saw in my setup running as an ap (I used netplan and NetworkManager - but I do not use its AP (wifi hotspot) features )

     

    > sudo iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination  

     

    ^ empty

    sudo nft list ruleset

    ^ empty

     

    my setup is documented here:

    https://gist.github.com/ag88/de02933ba65500376d1ff48e504b1bf3

    I'm running and using hostapd for AP, for one thing hostapd produce logs for every client that connects to the wifi AP, that is far better than the 'built-in' 'easy' AP say with NetworkManager.


    Now I'd try to explain why you observe what you observe:

    ---------

    Network Manager could be using DNSmasq

    https://en.wikipedia.org/wiki/Dnsmasq

    https://thekelleys.org.uk/dnsmasq/doc.html

     

    when it setup the AP, it creates an NAT so that the wifi-subnet can access the upstream network

    https://tldp.org/HOWTO/html_single/Masquerading-Simple-HOWTO/

    in addition,, DNSmasq also provides a dhcp server (to distribute ip addresses to the connecting wifi clients) and ipv6 router advertisement.

     

    that is what makes it 'simple'. don't like that?

     

     

    those 3 above can normally be installed via apt

     

    next configure and setup the network interfaces and hostapd like what I did:
    key is (*unmanage*  the WiFi interface and use hostapd to manage it, manual configure it)

     https://gist.github.com/ag88/de02933ba65500376d1ff48e504b1bf3

    then you can choose to setup a network bridge or routing as you deemed fit.

     

    or even NAT - via ip tables or nftables

    https://wiki.nftables.org/wiki-nftables/index.php/Main_Page

    ^ if you do this, then that is what dnsmasq (probably called by NetworkManager) tries to do for you to make it 'easy' 

     

    but if  you configure everything yourself, using hostapd and the respective individual tools (dhcp server, radvd etc), no interference from Netplan, NetworkManager , dnsmasq, doesn't touch your iptables or nftables

    ---
    this mode: AP for wifi interface is a *feature* that you used in NetworkManager (dnsmasq)
    this is different from saying that Netplan and/or NetworkManager * *maliciously* change firewall configs for all possible combinations of network interfaces and configurations* 


    don't like that AP feature / implementation in NetworkManager? you could probably take it up with RedHat 

    https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/networking_guide/getting_started_with_networkmanager

    I'm not sure what other ways are there to configure the AP in NetworkManager so that it doesn't do NAT

    you would need to experiment if you are using the mode: AP feature in NetworkManager, there are likely various config options

    https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/proc_configuring-rhel-as-a-wpa2-or-wpa3-personal-access-point_configuring-and-managing-networking

    https://www.baeldung.com/linux/nmcli-wap-sharing-internet

     

    doing everything manually for WiFi AP  using hostapd land individual tools, lets you control every single aspects of the network configs, I prefer this myself over the 'simple' approach e.g. that offered by NetworkManager, this include your firewall rules iptables, nftables etc,

    it is in part because the 'simple' AP offered by NetworkManager does so using NAT which is basically firewall rulesets i.e. iptables, nftables, if you don't want it to 'touch' that, then you would need to setup things manually and not use NetworkManager's AP mode.

     

  4. @Cancer

    Why you need to drop ifconfig for ip:

    https://opensource.com/article/21/1/ifconfig-ip-linux

    If you’re still using ifconfig, you’re living in the past

    https://ubuntu.com/blog/if-youre-still-using-ifconfig-youre-living-in-the-past

     

    there are certain things in this article that can be done in ip command that takes more than just ifconfig to do the same. 

    Introduction to Linux interfaces for virtual networking

    https://developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking#vlan

    ^ this matters if you are bothered about containers, docker, virtual machines, virtualbox, vpn, wireguard, vlan, etc etc

    otherwise, if you don't need any of containers, docker, virtual machines, virtualbox, vpn, wireguard, vlan, etc etc you can live with ifconfig

    in a certain sense, the availability of this network infrastructure in linux along with ip command as one of the tools accounts for the modern trillion $ cloud services: amazon aws, google cloud, azure, ibm redhat, and practically every other vps, web, any sort of cloud services on Internet that runs on linux today.

     

    anyway, to get ifconfig it is simply

    sudo apt install net-tools

    https://www.fosslinux.com/121757/how-to-install-missing-ifconfig-command-on-linux.htm

     

     

  5. accordingly, one can remove Netplan if one don't like it

    https://www.baeldung.com/linux/etc-network-interfaces-netplan-switch

     

    and that actually even with Netplan one can configure a different renderer, e.g. Network-Manager
    https://docs.armbian.com/User-Guide_Networking/

    or for that matter, I think it is feasible to remove Netplan altogether and just use Network Manager, if one prefers that
    or even for that matter switch back to the raw lowest level /etc/network/interfaces as described in the 1st link


    In addition

    • show the detailed  sequence of events and provide details that:
      Quote

      Netplan by default to manage network settings. But when it uses  NetworkManager as renderer, it silently changes iptables rules—without asking, without telling.

       

    if you cannot show this in detail, then what is your basis of saying that it happens? 

     

    Note that normally, there is a sequence of events, the interfaces need to be setup first hand, then that the firewall (e.g. iptables) is configured after that.

    What you need to proof in addition, is that Netplan or NetworkManager *revoke or change* your iptables / firewall setup if they are configured after Netplan / NetworkManager setup the interfaces.
    i.e. that it is potentially malicious

     

    if all that you mention can be rigiously proven then that perhaps we can file that with mitre and have the world cybersecurity issue a major CVE about it.

    https://attack.mitre.org/

    https://www.cve.org/

    i.e. that the whole world and every web server, every vps,  anyone any servers running wordpress on linux,  any webs running linux,  everyone including the whole amazonaws, azure, google cloud, redhat ibm, etc etc running linux follow up and fix *all the servers in the Internet*

     

  6. I just tested shutting down hostapd and restarting, it works

    systemctl stop hostapd.service
    systemctl start hostapd.service

     

    system process like hostapd should normally be properly started up and shutdown using systemd, killing the process etc may leave the kernel in inconsistent state. And maybe that's why you observe the issue.

     

    this is how I set it up

    https://gist.github.com/ag88/de02933ba65500376d1ff48e504b1bf3

     

    accordingly, hostapd may require the interface to be on a bridge, I'm not sure about this, but that I'm using a (software) bridge so that the wifi interface is on it.

    > uname -a
    Linux orangepizero3a3 6.12.35-current-sunxi64 #1 SMP Fri Jun 27 10:11:46 UTC 2025 aarch64 GNU/Linux
    >  nmcli c
    NAME    UUID                                  TYPE      DEVICE 
    bridge  a6aa1bb8-c47e-400e-8de1-7faf96489c7a  bridge    br0    
    lo      084c74b2-0638-48be-b4c9-364f854ecabd  loopback  lo     
    br-eth  6bab09b0-e16c-438b-a1bf-e0d82ca5141b  ethernet  end0  
    >  sudo bridge link
    2: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100 
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100

     

    I put both ethernet and wifi on the bridge, wifi is not managed by network manager, hostapd patch that into the bridge.

     

    it is possible to just let hostapd setup the bridge in hostapd.conf, and normally that's all needed.

     

    this isn't the earliest armbian I'm running hostapd in, i've done it since linux 6.6.x kernel an earlier release some 1 year back or so, no issues.

     

  7. anything 'interesting' in dmesg? and what is the Armbian / kernel version? e.g.

    uname -a

     

    btw 'real' armbian is currently at linux version 6.12.x

    https://www.armbian.com/orange-pi-zero-3/

     

    btw I disabled wpa_supplicant when I run hostapd, I'm not sure if it'd affect anything, normally hostapd should work with wpa_supplicant running should be 'no problem'.

    wpa_supplicant is 'connecting out', while hostapd is an AP hotspot.

     

  8. this is posted to Gist:

    https://gist.github.com/ag88/65db5434158683e43d1cc77c337ebdb5

    • Introduction

    Rpi-monitor
    https://github.com/XavierBerger/RPi-Monitor
    is a very nice app for monitoring sbc (single board computers/ actually bigger computers as well) like RPi on a web.
    it gives you a quick look at various system metrics cpu load, uptime, temperatures etc and more on a nice web page.
    and on top, makes nice time series graphs for the same, practically a dashboard.

     

    • Installing in Armbian 25.8 for Orange Pi Zero 3

    Rpi-monitor is normally not found in the common Apt repositories and actually the binary is a little old.
    I tried installing it based on the 'formal' docs but hit some invalid public keys errors, possibly expired certs.
    https://xavierberger.github.io/RPi-Monitor-docs/11_installation.html

    so here is a 'workaround'

     

    •  Deb packages for rpi-monitor

    you can find the packages in this repository (note that this may not be permanant and may change)
    https://github.com/XavierBerger/RPi-Monitor-deb

    use the **rpimonitor_latest.deb** file
    https://github.com/XavierBerger/RPi-Monitor-deb/tree/develop/packages

     

    • install rpimonitor_latest.deb in Armbian

    use apt to install *rpimonitor_latest.deb* as it has varous package dependencies. 
    e.g. download it to a folder and from there run

    sudo apt install ./rpimonitor_latest.deb 


    the prior step should install rpimonitor, and check that the service is running by going to  http://your_sbc_ip_address:8888

     

    • checking the setup
    •  

    rpi-monitor is runa as a systemd (unit) service 

    if it is not running you can try 

    systemctl status rpimonitor.service


    or 
     

    journalctl -u rpimonitor.service



    to check what went wrong.

    to start / stop rpi-monitor it is as per basic systemd services e.g.

    systemctl start rpimonitor.service

     

    •  temperature 'not displaying'

    apparently, it is affected by this issue:
    https://github.com/XavierBerger/RPi-Monitor/issues/374

    accordingly the fix/'workaround' is edit /etc/rpimonitor/template/temperature.conf
    replace

    #dynamic.1.postprocess=sprintf("%.2f", $1/1000)
    dynamic.1.postprocess=$1/1000

     

  9. @ABhomeuser

    the board page is a bit out of date

    https://www.armbian.com/orange-pi-zero-3/

    Debian 12 (Bookworm)	Minimal / IOT			SHA 	  ASC	241.1 MB
    Debian 12 (Bookworm)	Minimal / IOT			SHA 	  ASC	230.3 MB

    @Igor  ^ how do we update that on the boards page?

     

    are actually the same file. proof:

    download the sha file for each of them and look at the content, you can see that both the filename and hash is identical in both sha texts.

    this means that both files are in fact identical  and actually the same size, despite the incorrect file size indication on the front page.

     

    in fact that is currently linked to this release on github

    https://github.com/armbian/community/releases/tag/25.8.0-trunk.375

    ^ this is released last week 

    there are in fact 'earlier' releases, I'm running an image from this release

    https://github.com/armbian/community/releases/tag/25.8.0-trunk.309

     

    I'd suggest going with the 'latest and greatest'  (trunk 375) (which is that on the boards page currently) and if there are issues,  then try that a little earlier e.g. in the latter link (trunk 309).

    armbian community images are rolling releases, they are 'fast moving' and perhaps come back in a few weeks, and it could be another trunk release number.

    but simply take an image 'as of now' and normally it 'just works' e.g. from the  boards page.

  10. tried mining feathercoin,

     

    git clone https://github.com/ghostlander/cpuminer-neoscrypt

     

    lots of missing dependencies to build that

    apt install automake autoconf-archive pkg-config libtool libcurl4-openssl-dev 

     

    but once done it is autogen.sh, configure, make

     

    next register on https://www.mining-dutch.nl/

    then run

    ./minerd -D --algo=neoscrypt --url=stratum+tcp://mining-dutch.nl:9993 -u username.worker1 -p d=10


     

    Spoiler

     

    Hash:   020E9F4B68201E05469CC87039286A9EEFAFB6525E9CDDAD40E4DCFC6D950000x0
    Target: 0000000000000000000000000000000000000000000000000000000098990100x0
    [2025-07-17 20:07:06] thread 2: 537 hashes, 1.097 KH/s
    [2025-07-17 20:07:06] accepted: 14/14 (100.000%), 4.398 KH/s (yay!!!)
    [2025-07-17 20:07:14] DEBUG (little endian): hash <= target
    Hash:   FD8193D5659404573894CC22F8A37859A2347842E382CCF151747A0E34220100x0
    Target: 0000000000000000000000000000000000000000000000000000000098990100x0
    [2025-07-17 20:07:14] thread 1: 9481 hashes, 1.100 KH/s
    [2025-07-17 20:07:14] accepted: 15/15 (100.000%), 4.397 KH/s (yay!!!)
    [2025-07-17 20:07:18] DEBUG (little endian): hash <= target
    Hash:   9B92D3883EA6CE4BC66BE97CF9CDC6E8C51B0D28B8C3D7F2BA28B8C58D310100x0
    Target: 0000000000000000000000000000000000000000000000000000000098990100x0
    [2025-07-17 20:07:18] thread 2: 13983 hashes, 1.100 KH/s
    [2025-07-17 20:07:18] accepted: 16/16 (100.000%), 4.400 KH/s (yay!!!)
    [2025-07-17 20:07:32] DEBUG (little endian): hash <= target
    Hash:   3FC00FD320605941571915FC723A4CBB2C9E798552E309C980F333CA76B40000x0
    Target: 0000000000000000000000000000000000000000000000000000000098990100x0
    [2025-07-17 20:07:32] thread 1: 20346 hashes, 1.101 KH/s
    [2025-07-17 20:07:32] accepted: 17/17 (100.000%), 4.401 KH/s (yay!!!)
    [2025-07-17 20:07:34] thread 3: 66030 hashes, 1.100 KH/s
    [2025-07-17 20:07:36] DEBUG (little endian): hash <= target
    Hash:   787E9A8E6CF0D6293659419BA9963ED809F7D606A2AD8E879968A5B075620000x0
    Target: 0000000000000000000000000000000000000000000000000000000098990100x0
    [2025-07-17 20:07:36] thread 1: 4421 hashes, 1.100 KH/s
    [2025-07-17 20:07:36] accepted: 18/18 (100.000%), 4.400 KH/s (yay!!!)
    [2025-07-17 20:07:42] DEBUG (little endian): hash <= target
    Hash:   27163C9021EAE5D4D5D458F384751990AE336F19BD3AC8D980AA97C55A940000x0
    Target: 0000000000000000000000000000000000000000000000000000000098990100x0
    [2025-07-17 20:07:42] thread 3: 8654 hashes, 1.101 KH/s
    [2025-07-17 20:07:42] accepted: 19/19 (100.000%), 4.400 KH/s (yay!!!)
    [2025-07-17 20:08:00] thread 0: 65995 hashes, 1.100 KH/s
    [2025-07-17 20:08:18] thread 2: 65977 hashes, 1.100 KH/s
    [2025-07-17 20:08:36] thread 1: 65992 hashes, 1.100 KH/s
    [2025-07-17 20:08:37] DEBUG (little endian): hash <= target
    Hash:   037AD1DB8D7C7FAB0E022F8541BA34D67A7E9B3695B396FAF84C6D47AD950000x0
    Target: 0000000000000000000000000000000000000000000000000000000098990100x0
    [2025-07-17 20:08:37] thread 0: 40427 hashes, 1.100 KH/s
    [2025-07-17 20:08:37] accepted: 20/20 (100.000%), 4.401 KH/s (yay!!!)
    [2025-07-17 20:08:39] DEBUG (little endian): hash <= target
    Hash:   5FBB0159477A05E1324B6A3D240B89DAEDF34A83A8AA78FE155FA86DE3140100x0
    Target: 0000000000000000000000000000000000000000000000000000000098990100x0
    [2025-07-17 20:08:39] thread 3: 62568 hashes, 1.101 KH/s
    [2025-07-17 20:08:39] accepted: 21/21 (100.000%), 4.401 KH/s (yay!!!)

     

    a whopping 1.1 k hash/s on each core, well not very impressivve, but it mines :)

    i think this is no Neon SIMD

     

    Stop monitoring using [ctrl]-[c]
    Time        CPU    load %cpu %sys %usr %nice %io %irq   Tcpu  C.St.
    
    20:22:02  1416 MHz  3.90 100%   0%   0%  99%   0%   0%  53.2 °C  0/7
    20:22:07  1416 MHz  3.91 100%   0%   0%  99%   0%   0%  53.2 °C  0/7
    20:22:12  1416 MHz  3.92 100%   0%   0%  99%   0%   0%  53.4 °C  0/7

    ^ this is with the fan on

     

    optimise it a little in makefile

    #CFLAGS = -g -O2
    CFLAGS =
    
    minerd_CPPFLAGS = -O3 -mcpu=cortex-a53 -march=armv8-a -ftree-vectorize -funsafe-math-optimizations 

     

     

    Spoiler

     

    [2025-07-17 20:41:42] DEBUG (little endian): hash <= target
    Hash:   02D285CA9C499E30195BD3EC4F4DF544D03EDDC7A00DFC0D255EB1E7BA160000x0
    Target: 0000000000000000000000000000000000000000000000000000008099190000x0
    [2025-07-17 20:41:42] thread 1: 19364 hashes, 1.127 KH/s
    [2025-07-17 20:41:42] accepted: 1/1 (100.000%), 1.127 KH/s (yay!!!)
    [2025-07-17 20:41:54] thread 3: 32766 hashes, 1.128 KH/s
    [2025-07-17 20:41:54] thread 0: 32766 hashes, 1.127 KH/s
    [2025-07-17 20:41:54] thread 2: 32766 hashes, 1.124 KH/s
    [2025-07-17 20:42:42] thread 1: 67603 hashes, 1.127 KH/s
    [2025-07-17 20:42:53] thread 3: 67650 hashes, 1.128 KH/s
    [2025-07-17 20:42:54] thread 0: 67639 hashes, 1.127 KH/s
    [2025-07-17 20:42:54] thread 2: 67439 hashes, 1.124 KH/s
    [2025-07-17 20:43:42] thread 1: 67627 hashes, 1.128 KH/s

     

     


    well, just a very minor 0.025 k hash/s  improvement per core. perhaps it already has Neon SIMD or that it needs 'hand optimization', that is hard.

     

     

     

  11. @robertoj

    Quote

    I don't even have a reference viewpoint  what should I start comparing?

     

    I read claims that Python3-numpy, python3-opencv are highly optimized, but I never researched HOW OPTIMIZED 

     

    I have also heard that DRM can help accelerate machine learning https://www.youtube.com/watch?v=NQz6VqvtehI&t=5m7s

     

    well, Neon SIMD isn't just useful for that matrix math, it is useful e.g. as a video decoder/encoder in place of specialized on chip video hardware. it could partially explain the 'better performance' of mpv (https://mpv.io/)

    e.g. if mpv is after all built with -o3 or that mpv uses a library that is optimised iwth Neon SIMD, it could likely practically see a performance as the on-chip proprietary video hardware which is not publicly documented.

    with an apparent 100% cpu usage if all 4 cpu cores are used with Neon SIMD. 

     

    I think I once chanced upon an Rpi forum comment about shifting the codes to Neon SIMD instead instead of using propietary video hardware, partly as these 'small' chips has 'limited' capabilities for on chip video processing etc.

    it isn;'t really a bad thing if after all we'd use say an Opi Z3 as a 'dedicated' video streamer.  A thing is at 100% cpu, non compute threads may struggle to get a slot to run at times, it may take setting 'nice' levels so that some threads get a higher priority.

     

    I've been thinking about running a (crypto coin) miner on it, probably would do that some time. They certainly don't get close to say even a Haswell, or Ryzen or even a 'low end gpu' but that they are faster than the 'older' 'smaller' chips

    for a comparison, the quoted 'old' figures

    https://linux-sunxi.org/Benchmarks#Linpack

    -mcpu=cortex-a8 -march=armv7-a -mfpu=neon -mfloat-abi=hard -funsafe-math-optimizations -fno-fast-math

    Memory required:  315K.
    
    
    LINPACK benchmark, Double precision.
    Machine precision:  15 digits.
    Array size 200 X 200.
    Average rolled and unrolled performance:
    
        Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
    ----------------------------------------------------
          16   0.61  88.52%   6.56%   4.92%  37885.057
          32   1.21  85.12%   2.48%  12.40%  41459.119
          64   2.43  93.83%   2.47%   3.70%  37561.254
         128   4.86  91.77%   2.47%   5.76%  38381.368
         256   9.70  92.06%   2.89%   5.05%  38173.000
         512  19.41  91.29%   2.47%   6.23%  38634.432

    mcpu=cortex-a8 -mtune=cortex-a8 -march=armv7-a -mfpu=neon -mfloat-abi=hard -funsafe-math-optimizations -fomit-frame-pointer -ffast-math -funroll-loops -funsafe-loop-optimizations

    Memory required:  315K.
    
    LINPACK benchmark, Double precision.
    Machine precision:  15 digits.
    Array size 200 X 200.
    Average rolled and unrolled performance:
    
        Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
    ----------------------------------------------------
          16   0.53  90.57%   1.89%   7.55%  44843.537
          32   1.05  90.48%   3.81%   5.71%  44390.572
          64   2.13  90.14%   2.35%   7.51%  44615.905
         128   4.23  90.54%   3.07%   6.38%  44390.572
         256   8.46  90.19%   2.84%   6.97%  44672.596
         512  17.03  90.55%   2.76%   6.69%  44250.892

     

    vs that above is like 8x - 10x improvements on a single core

     

     

     

  12. ok we have a cheap SBC Z3 H618, but we'd still want to run it as like a supercomputer

    https://linux-sunxi.org/Benchmarks#Linpack

     

    download

    https://www.netlib.org/benchmark/linpackc.new

    save as linpack.c

     

    makefiile

    all: linpack-noopt linpack-o3
    
    linpack-noopt: linpack.c
            gcc -o $@ $^
    
    linpack-o3: linpack.c
            gcc -O3 -o $@ $^ -lm -mcpu=cortex-a53 -march=armv8-a -ftree-vectorize -funsafe-math-optimizations 
    
    clean: linpack-noopt linpack-o3
            rm $^
    
    .PHONY: all clean

     

    ok, for your convenience it is in the attached zip file. to unzip you may need (as sudo):

    apt install zip unzip

     

    for the compilers you may need

    apt install build-essential

     

    $ make
    gcc -o linpack-noopt linpack.c
    gcc -O3 -o linpack-o3 linpack.c -lm -mcpu=cortex-a53 -march=armv8-a -ftree-vectorize -funsafe-math-optimizations 
    
    $ ./linpack-noopt 
    Enter array size (q to quit) [200]:  
    Memory required:  315K.
    
    
    LINPACK benchmark, Double precision.
    Machine precision:  15 digits.
    Array size 200 X 200.
    Average rolled and unrolled performance:
    
        Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
    ----------------------------------------------------
          32   0.68  88.14%   2.66%   9.20%  71117.671
          64   1.36  88.13%   2.66%   9.21%  71103.230
         128   2.72  88.14%   2.66%   9.20%  71118.447
         256   5.44  88.14%   2.66%   9.20%  71117.368
         512  10.89  88.14%   2.66%   9.20%  71118.505
    
    Enter array size (q to quit) [200]:  q
    
    $ ./linpack-o3 
    Enter array size (q to quit) [200]:  
    Memory required:  315K.
    
    
    LINPACK benchmark, Double precision.
    Machine precision:  15 digits.
    Array size 200 X 200.
    Average rolled and unrolled performance:
    
        Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
    ----------------------------------------------------
         128   0.53  86.33%   2.89%  10.78%  374433.231
         256   1.05  86.33%   2.88%  10.79%  374573.654
         512   2.10  86.34%   2.88%  10.79%  374443.201
        1024   4.21  86.32%   2.88%  10.80%  374574.751
        2048   8.42  86.32%   2.88%  10.80%  374612.768
        4096  16.83  86.33%   2.88%  10.79%  374574.926
    
    Enter array size (q to quit) [200]:  q

     

    This is single core benchmark, apparently gcc -o3 does Neon SIMD

     

     

     

     

    linpack.zip

  13. Arm Neon is quite a thing, SIMD

    https://developer.arm.com/documentation/102159/latest/

    https://github.com/thenifty/neon-guide

    and accordingly aarch64 (e.g. Cortex A53, A55, A72, A75, A76 etc etc i.e. arm V8a onwards have them)

    https://developer.arm.com/documentation/102474/0100/Fundamentals-of-Armv8-Neon-technology

     

    the H618 is an A53 and hence should have it.

     

    it is a good 'replacement' for proprietary hardware etc as this like Intel's sse, avx , simd are defiined and standardized by Arm.

    Hence, they'd work if programs are coded and compiled to use them. Accordiingly, the pripietary video hardware is still undocumented (at least not publicly accessible), and most of that works are reverse engineered and incomplete.

     

    apps written to use Neon SIMD would however 'just works' and accelerated by virtue that it is SIMD.

     

     

  14. Quote

    * mpv plays most mp4s VERY SMOOTHLY  BUT WITH 100% CPU

    oops, I missed reading that 100% cpu, but it is ok it is a a53 after all 😅

     

    videos I'd guess is still 'difficult' on z3, accordingly there is some support for gpu vector graphics but I'd guess mostly just triangles.

    video decoding can be done with just neon (vector computation) , but i'd guess there is still limited access to video decoding hardware.

    using neon is likely to give that 100% cpu reading as the cpu is busy literally, using real video hardware would be 'invisible' in a sense, the cpu usage may look low but that one won't see that the video hardware itself may after all be reading 100%.

     

  15. run dmesg, after you plug that uart into the port

    it should show the usb dongle connected and the port

     

    then a few more thiings,

    • bad wires ensure that no matter what you do no data pass over the wires (I've seen this, especially those dupont pin connections)
    • wrong connections ensure that no matter what you do no data pass over the wires. Are you sure you are talking to the correct *pins* and *port* on the host side?
    • lousy dongles ensure that no matter what you do no data pass over the wires, get 'better' ones. oh well, this depends a little on luck, but I used ch340 usb-uart bridges, and they worked just well
      https://www.aliexpress.com/w/wholesale-ch340-uart.html
      searching usb uart normally returns a lot of entries
      https://www.aliexpress.com/w/wholesale-usb-uart.html
      if one doesn't work, try another
    • oh then there is DTS overlay etc, sometimes that fix is needed
    • bad / no drivers etc (dmesg should show it, on windows your mileage may vary)
    • etc etc

     

    the rationale is, if you did it once successfully, either remember how you did it or document it ;)

     

    sometimes, alternatives include, connect hdmi to monitor, usb keyboard and mouse and use as alternative console, mileage may vary.

     

     

  16. sound is a gotcha on the opi z3, actually opi z3 has sound but output only. accordingly opi z2 has sound both input (mic) and output.

    and i think for 'convenience' many would after all use a usb sound card instead, just that there is only one usb port and the other 2 is actually on the extension pins  on opi z3 as do with the audio output on z3

     

    http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-3.html

     

    as for usb + audio extension, orangepi sells an extension board

    but that accordingly without that it may be possible to hack those usb connectors 

    https://www.aliexpress.com/w/wholesale-usb-female-type-a-with-wire.htmll

     

    if one is willing to go the distance with electronics, 

    for the microphone i did a little research and found that there are mems microphone modules around

    small, compact and possibly can be easily paired with boards like z , z2 or z3

    https://www.aliexpress.com/w/wholesale-mems-microphone.html

    but that most of these are I2S interfaces and I'm not too sure if it is feasible 

    apparently it is there for output, but I'm not sure about input

    https://github.com/elkoni/Opi_Zero_3_I2S3_5.4

  17. I've some old boards too e.g.

    https://www.armbian.com/orange-pi-one/

    interestingly there is an updated image for it, but that things I remember there are lots of gotcha unlike the whole many generation of incremental improvements between boards that finally evolved into a opi z3.

    among the gotchas on orangepi one  and orangepi pc h3 is that it uses a proprietary openrisc chip for power off which back then, if you run poweroff, the cpu will instead become very hot rapidly and you have to pull the usb cable quickly.

    today there is this thing crust which i've not yet tried which is deemed to be able to orderly  shutdown the soc

    https://github.com/crust-firmware/crust

    opi z3 uses a PMIC with its own internal firmware and I think it is comms i2c etc that starts the shutdown process.

     

    things are different between the generations (of boards and kernel)

     

    ---

    my guess is to try a new u-boot, it may take doing a build

    and the changes may be quite similar to this

    https://github.com/armbian/build/pull/8334

    https://github.com/armbian/build/pull/8334/commits/49ccbe88bc2ddf31b55ece850d28ef18c6ae8a1a

     

    ---

     

    if you want to venture and experiment with just u-boot alone

    here is how I once tried

    https://github.com/ag88/1.5GB_Fix_for_Armbian_on_OrangePiZero3

    https://github.com/ag88/1.5GB_Fix_for_Armbian_on_OrangePiZero3/blob/main/build.md

     

  18. just like to say that the recent images

    works just well

        _             _    _                                         _ _        
       /_\  _ _ _ __ | |__(_)__ _ _ _    __ ___ _ __  _ __ _  _ _ _ (_) |_ _  _ 
      / _ \| '_| '  \| '_ \ / _` | ' \  / _/ _ \ '  \| '  \ || | ' \| |  _| || |
     /_/ \_\_| |_|_|_|_.__/_\__,_|_||_|_\__\___/_|_|_|_|_|_\_,_|_||_|_|\__|\_, |
                                     |___|                                 |__/ 
     v25.8 rolling for Orange Pi Zero3 running Armbian Linux 6.12.35-current-sunxi64
    
     Packages:     Debian stable (bookworm)
     Support:      for advanced users (rolling release)
     IPv4:         (LAN) xxx.xxx.xxx.xxx (WAN) yyy.yyy.yyy.yyy
     IPv6:         fd00:xxxx:xxxx::xxxx:xxxx (WAN) xxxx:xxxx::yyyy:yyyy
     WiFi AP:      SSID: (ssid), 
    
     Performance:  
    
     Load:         2%                Uptime:       3:50
     Memory usage: 4% of 3.83G  
     CPU temp:     41°C              Usage of /:   3% of 58G    
     RX today:     7 MiB        
     Commands: 
    
     Configuration : armbian-config
     Monitoring    : htop


     

×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines