If you want arping to run as root without being root and you don’t mind anyone on your system running it, you can change the file mode to +setuid. When it is run it will assume the user account that owns the executable file.
sudo chmod u+s /usr/bin/arping
sudo chown root /usr/bin/arping
If you want to limit it’s access to only some users, then in addition create a group for those users eg.
gpasswd -a openhab arping
Then remove world execute permissions and make arping owned by the group arping with group execution rights.
sudo chgrp arping /usr/bin/arping
sudo chmod w-x /usr/bin/arping
sudo chmod g+x /usr/bin/arping
Now only members in the arping group (or root) can run it, but when it runs it will run as root.
If you think this is a nasty hack and shouldn’t be done as it provides elevated privilege execution then you should note the following output…
ls -l /bin/ping
ls -l /usr/bin/ping
On Unix ONLY root can use ping, so it is installed setuid root, so just repeat that pattern with arping.
There are several reasons why these utilities require root. Binding to a low port is one of them, the other is that both can be used for nefarious aims and cause quite a lot of disruption to a network in the right (wrong?) hands.
As a small aside, using ARP for device detection is not always very reliable. The ARP protocol does not specify important things like how long an entry can be cached. Also devices with power saving modes may only send beacons to remain on Wifi and will ignore everything including ARP packets while sleeping. My MotoG5+ will not send or receive any network traffic while sleeping. Not ping, not arping, nothing. The only thing it does respond to is the Wifi beacons, so it appears connected to Wifi, but you can’t talk to it.