VLC for iOS connecting to Windows SMB
Hello all.
After a couple of hours of troubleshooting through Wireshark and windows I figured out the cause of a bug that's been driving me mental.
I'd recently gone through the process of hardening my Windows file server configurations and this included adding support for SMBv3 and specifically SMBv3 encryption on Windows hosts.
After much messing around:
Windows <-> Windows SMB - works fine
Android VLC -> Windows SMB - works fine
iOS VLC -> Windows SMB - does not work.
Firing up Wireshark shows when setting up the connection the server returns an unhelpful
"Error: STATUS_ACCESS_DENIED"
The simple solution to this is to run the following command as an admin in powershell:
PS C:\> Set-SmbServerConfiguration -encryptdata $false
This disables support for encryption on the server.
Obviously no encryption is not ideal for my network. So for the time being I'm back to using Android VLC.
The following is a "known good" SMB config on a windows host that works with windows, android and iOS in case you want to build the same config:
PS C:\> Get-SmbServerConfiguration
AnnounceComment :
AnnounceServer : False
AsynchronousCredits : 64
AuditSmb1Access : False
AutoDisconnectTimeout : 15
AutoShareServer : True
AutoShareWorkstation : False
CachedOpenLimit : 10
DurableHandleV2TimeoutInSeconds : 180
EnableAuthenticateUserSharing : False
EnableDownlevelTimewarp : False
EnableForcedLogoff : True
EnableLeasing : True
EnableMultiChannel : True
EnableOplocks : True
EnableSecuritySignature : True
EnableSMB1Protocol : False
EnableSMB2Protocol : True
EnableStrictNameChecking : True
EncryptData : False
IrpStackSize : 15
KeepAliveTime : 2
MaxChannelPerSession : 32
MaxMpxCount : 50
MaxSessionPerConnection : 16384
MaxThreadsPerQueue : 20
MaxWorkItems : 1
NullSessionPipes :
NullSessionShares :
OplockBreakWait : 35
PendingClientTimeoutInSeconds : 120
RejectUnencryptedAccess : False
RequireSecuritySignature : False
ServerHidden : True
Smb2CreditsMax : 2048
Smb2CreditsMin : 128
SmbServerNameHardeningLevel : 0
TreatHostAsStableStorage : False
ValidateAliasNotCircular : True
ValidateShareScope : True
ValidateShareScopeNotAliased : True
ValidateTargetName : True