Network tools and utilities
- tftp on MacOS v26 (Tahoe) [CANCELLED]
- Terminal via serial port on MacOS Sonoma
- Speed tests
- Network Time Protocol (NTP)
tftp on MacOS v26 (Tahoe) [CANCELLED]
preface
tftp was depreciated from macOS.
lesson (might be useful)
Check is it available
ls /usr/libexec/tftpd
Create local tftp directory AS NORMAL user
export u="anton-w"
export dir="/Users/${u}/delme/tftp"
mkdir -p ${dir}
cd ${dir}
pwd
current status
netstat -f inet | grep tftp
lsof -iUDP:69
lsof -nPi | grep ":69"
stop service and verify
export s="system/com.apple.tftpd"
launchctl stop ${s}
launchctl bootout ${s}
launchctl disable ${s}
launchctl remove ${s}
launchctl list | grep ${s}
netstat -f inet | grep tftp
lsof -iUDP:69
lsof -nPi | grep ":69"
default config has disabled option, override is needed
export f="/System/Library/LaunchDaemons/tftp.plist"
cat ${f} | grep com.apple.tftpd
cat ${f} | grep -i -A1 disabled
Create override
export f="/System/Library/LaunchDaemons/tftp.plist"
export fov="/Library/LaunchDaemons/local.tftp.plist"
cp ${f} ${fov}
ls -la ${fov}
vi ${fov}
Content
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>local.tftp</string>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/tftpd</string>
<string>-d</string>
<string>-l</string>
<string>-s</string>
<string>/Users/anton-w/delme/tftp</string>
<string>-u</string>
<string>anton-w</string>
</array>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<true/>
</dict>
<key>InitGroups</key>
<true/>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>tftp</string>
<key>SockType</key>
<string>dgram</string>
</dict>
</dict>
</dict>
</plist>
Verify plist file
cat ${fov} | grep -i -A1 disabled
plutil -lint ${fov}
Set ownership and permissions
ls -la ${fov}
chown root:wheel ${fov}
chmod 644 ${fov}
ls -la ${fov}
Enable service
export s="system/local.tftp"
launchctl stop ${s}
launchctl bootout ${s}
launchctl disable ${s}
launchctl remove ${s}
launchctl list | grep ${s}
launchctl enable ${s}
export f="/Library/LaunchDaemons/local.tftp.plist"
launchctl load -wF ${f}
# launchctl bootstrap system ${s}
launchctl start ${s}
launchctl list ${s}
launchctl print ${s} | grep state
New file should be in the dump
launchctl dumpstate | grep ".plist" | grep ftp
Verify that default TFTP root exists
ls -la /private/tftpboot
Create if missing
sudo mkdir -p /private/tftpboot
sudo chmod 777 /private/tftpboot
Verify tftp is listening on
netstat -f inet | grep tftp
netstat -an | grep "*.69"
netstat -atp UDP | grep tftp
lsof -iUDP:69
lsof -nPi | grep ":69"
Check state firewall
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
if needed, create a rule to allow
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/tftpd
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/libexec/tftpd
I am using Little Snitch, thus my native firewall is disabled.
TFTP daemon is set up and ready to receive/transmit files.
troubleshooting
launchctl dumpstate | grep ".plist" | grep ftp
log stream --style syslog --predicate 'process == "launchctl"'
log stream --style syslog --predicate 'subsystem == "com.apple.xpc.launchctl"'
log show --last 5m --style syslog --predicate 'subsystem == "com.apple.xpc.launchctl"'
Start daemon manually
/usr/libexec/tftpd \
-d \
-l \
-s \
/Users/anton-w/delme/tftp \
-u \
anton-w
FIle exist, is executable , but does not do anything.
pkgutil --file-info /usr/libexec/tftpd
# no package provides
codesign -dv /usr/libexec/tftpd
# has not authority
csrutil authenticated-root status
file /usr/libexec/tftpd
mount | grep "sealed"
Go home.
Terminal via serial port on MacOS Sonoma
Connect
Verify connectivity
system_profiler SPUSBDataType | grep -i -A5 serial
ioreg -p IOUSB
Identify device
ls -ltr /dev/tty*
Disconnect, connect back, repeat command to identify it is exactly the same device (it will be usually owned by the root, but by user)
ls -ltr /dev/
Attach screen to the serial port
screen /dev/ttys003 115200
Exit nicely, press
CTRL+A
K
Y
Speed tests
Global speed tests providers
Remember to open a new test in the new private session window (to ensure new TCP connection will be established)
https://speed.cloudflare.com
Does measure download for different sizes. Presents jitter in graphical way. Very good
Network Time Protocol (NTP)
Favourite NTP servers
In Turkey
In Finland
In Russia
In France
In United Arab Emirates
0.ae.pool.ntp.org
1.ae.pool.ntp.org
2.ae.pool.ntp.org
3.ae.pool.ntp.org
ntp1.recro.ae
ntp2.recro.ae
In Saudi Arabia