OSX SMB Transfers incredibly slow (Terminal Fix)

30. MĂ€rz 2019 Aus Von Ralph Kokott

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:

  1. rm /private/etc/nsmb.confRemoves any existing custom SMB client configuration so you start from a clean slate.
  2. echo “[default]” >> /etc/nsmb.confBegins a new nsmb.conf file with the [default] section, which applies these settings to all mounts.
  3. 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  .
  4. 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  .
  5. 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  .
  6. 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.
  7. 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.
  8. 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  .
  9. 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  .
  10. 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  .
  11. 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  .