Fixing Windows & OS X Filesharing Slowness (SMB2 / SMB3)

Update 19.Jan 2016

With Windows 10 and El Capitan this seems to work quite well within my little network at the moment.

The original post, try it if you want, YMMV.

I had some issues transferring files from a 10.9.4 Mavericks Mac to a Windows 8.1 desktop PC. The network was good, connection ok, and the account on the PC was valid. When I connected to the SMB share on the desktop PC from the Mac it seemed like it would work fine because a password prompt appeared, then available mountable folders. However the finder window would try updating the share in infinity and would not work. Maybe it worked 1 out of 25 times or so.

I can not claim that I have deep knowledge about the inner workings of SMB. What I do know is that people have some issues with this. Some say its an Apple bug but I don’t know.

To solve this Windows and OS X filesharing issue I had to add two registry DWORD entries using regedit on the Windows PC like so…:

Windows button + R and type regedit

Navigate to:

HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanServerParameters

Right click and select DWORD (32-bit Value)

Regedit DWORD

Create Smb2CreditsMax and give it a decimal value of 16384

Create Smb2CreditsMin and give it a decimal value of 768

Should look something like this (click for bigger) when you are finished. My system do at least.

regedit overview

 

I am not sure what this really does, it solved my Windows and OS X filesharing /directory listing issues at least. I would probably not do this regedit in production or for a customer. If you are reading this and know what this does please leave a comment.

Other Options

You could always force your Mac to use SMB1 instead, giving you slower transfer speeds but it should at least be stable. When connecting to your windows share type cifs://ip-or-servername instead of smb://ip-or-servername

Another option is to create a nsmb.conf file on your Mac. Open a terminal window. We are about to do some “hacking”!

Paste this line, into the terminal window. Make sure you copy the entire line, if you make one single error this won’t work.

echo "[default]" >> ~/Library/Preferences/nsmb.conf; echo "smb_neg=smb1_only" >> ~/Library/Preferences/nsmb.conf

Just remove the file to revert the changes, like so in the terminal window:

rm ~/Library/Preferences/nsmb.conf

Terminal

 

Make sure you have an active account on your Windows computer with a password set. Always check the easy stuff first.

I am mainly publishing this online for my own use. If you decide to follow my instructions please do so but I take no responsibility if you do something stupid. As I said, this worked fine for me but there is nothing that says that this has to work for you. If it does, great! 😉

Leave a Reply

%d bloggers like this: