Monday, July 13, 2015

Ericsson (Dell, Lenovo, Panasonic, Toshiba) 3G WWAN modules hanging

Ericsson has manufactured probably millions of faulty 3G WWAN modules that hang after few minutes to few hours of use. There's driver and firmware updates out that may sometimes help but usually only by extending time before hang bit longer.

Problem is somewhat interesting as it only seems to happen when telecom operator used has both 3G and 4G networks. Before 4G networks became common these cards worked somewhat ok. While problem like that sounds something firmware upgrade should fix actual fix is to disable powersaving on Windows driver side via hidden registry setting.

Most common variant of affected modules seems to be Ericsson F5521gw, but it's not limited to that particular model. Same issue is also present in OEM models used by Dell (at least DW5550 and DW5560), Panasonic, Lenovo, Toshiba etc. Version R8D02 from Panasonic has been stable in our use with registry fix. We've used same firmware on both Panasonic F5521gw and Dell DW5550.

Fix? First apply latest firmware, it doesn't matter if yours is OEM or identifies as Ericsson same firmware will work. Driver must be from your manufacturer for OEM models due USB IDs used. After card is updated all you need to do is locate it on registry under "SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}" and set "EnableSelectiveSuspend" DWORD to 0 in order to disable some nonsense powersave features that trigger these hangs.

I have included VBS below that will fix problem. Script is very limited and will only detect F5521gw variant but that was enough for my needs when I had to automate this via MDT on Panasonic CF-19 mk6 and mk7.

Option Explicit
'on error resume next

Const HKEY_LOCAL_MACHINE = &H80000002

Dim objReg
Dim strComputer, strKeyPath, arrSubKeys, arrValueTypes, arrValueNames, Found
Dim subkey, i

strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
 'wscript.echo subkey
 If subkey <> "Properties" Then
  objReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath & "\" & subkey, arrValueNames, arrValueTypes
  for i=0 to ubound(arrValuenames)
   'wscript.echo "Value name: " & arrValueNames(i)
   if arrValueNames(i) = "EnableSelectiveSuspend" then
    objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath & "\" & subkey, "DriverDesc", Found
    if Found = "F5521gw Mobile Broadband Device" Then
     objReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath & "\" & subkey, "EnableSelectiveSuspend", 0
     wscript.echo "Changed "&subkey
    End If
   End If
 End If

Set objReg = nothing

1 comment:

  1. It works perfectly on CF-19 MK5! Lost connection like 30 times a day. Tried this and 0 disconnects in 2 days use!


Got something to say?!