OSX SMB Transfers incredibly slow (Terminal Fix)
For archiving the Reddit solution I found (Link) I will describe the issue and the fix (that might or might not hold). This is on the MacBook Air 2024 OSX 15.4.1.
SMB transfers using Wifi 6 will take a minute to start and slow down to around 2-3 MB/s while the practical speed of Wifi allows for 25-30 MB/s.
rm /private/etc/nsmb.conf; echo â[default]â >> /etc/nsmb.conf; echo âsigning_required=noâ >> /etc/nsmb.conf; echo âstreams=yesâ >> /etc/nsmb.conf; echo ânotify_off=yesâ >> /etc/nsmb.conf; echo âport445=no_netbiosâ >> /etc/nsmb.conf; echo âunix extensions = noâ >> /etc/nsmb.conf; echo âveto files=/._*/.DS_Store/â >> /etc/nsmb.conf; echo âprotocol_vers_map=6â >> /etc/nsmb.conf; echo âmc_prefer_wired=yesâ >> /etc/nsmb.conf; defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE; exit
See the steps explained by ChatGPT:
- rm /private/etc/nsmb.confRemoves any existing custom SMB client configuration so you start from a clean slate.
- echo â[default]â >> /etc/nsmb.confBegins a new nsmb.conf file with the [default] section, which applies these settings to all mounts.
- echo âsigning_required=noâ >> /etc/nsmb.confDisables SMB packet signing.  By default macOS may insist on signing each packet for integrity, but many servers donât support it (or do it poorly), which can cause slowdowns or dropped connections.  Turning it off often restores throughput and stability  .
- echo âstreams=yesâ >> /etc/nsmb.confEnables âalternate data streamsâ (AppleDouble) support over SMB, ensuring resource forks and extended attributes are correctly preserved when transferring files  .
- echo ânotify_off=yesâ >> /etc/nsmb.confDisables filesystem change notifications.  Finderâs continual watch requests can overwhelm some NAS devices and lead to lag or disconnects; turning notifications off reduces that chatter  .
- echo âport445=no_netbiosâ >> /etc/nsmb.confForces the client to connect directly on TCP 445 (native SMB) instead of falling back to the older NetBIOS-over-TCP (port 139).  This avoids extra negotiation steps and can improve connection reliability.
- echo âunix extensions = noâ >> /etc/nsmb.confDisables the âUnix extensionsâ which map POSIX permissions, symlinks, etc., between server and client.  On some servers these extensions arenât fully implemented and can break directory listings or attribute lookups.
- echo âveto files=/._*/.DS_Store/â >> /etc/nsmb.confInstructs the client to tell the server to refuse creation or visibility of Appleâs â._âŠâ resource-fork files and .DS_Store metadata files on the share.  That prevents extra small files from being written and avoids needless directory updates  .
- echo âprotocol_vers_map=6â >> /etc/nsmb.confLimits the SMB dialects to exactly SMB 2.x (bitmask value 6 = enable SMB 2.0 & 2.1, disable SMB 1 & 3).  Many NASâmacOS incompatibilities live in SMB 3, so pinning to a known-good 2.x stack can restore stability and speed  .
- echo âmc_prefer_wired=yesâ >> /etc/nsmb.confIf SMB multichannel is negotiated, this tells the client to prefer wired Ethernet links over Wi-Fi, ensuring better performance when both interfaces are up  .
- defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUEStops Finder from writing .DS_Store files on network volumes entirelyâwhich both prevents clutter and removes yet more file-update overhead  .