Jump to content

DW5809e: how can i use the WWAN?


OSXnoob
 Share

Recommended Posts

  • Administrators

No modem software means it's not fully enabled. Make sure the Legacy_Sierra_QMI kext you use is based on the macOS Sierra version of CellPhoneHelper, not a version from a previous OS X release. The kext posted by Skvo in May 2015 was of Yosemite origin... You run macOS Sierra, right?

Link to comment
Share on other sites

  • Administrators

Skvo's thread clearly indicates:

"I did Legacy collaboration with the driver CellPhoneHelper.kext

Legacy_Sierra_QMI.kext for OS X 10.10.x"

 

You have to look into the kext he posted and apply a similar patch to macOS Sierra's CellPhoneHelper kext. Apple has a tendency to modify kexts related to WWAN modules, USB or Bluetooth from one OS X/macOS version to another... In particular, you'll find the syntax used in the Info.plist file differs and that renders patches or patched kexts for a given version unusable in the next one.

 

In the specific case of CellPhoneHelper kext, if you look at the various hardware profiles listed in the Info.plist, you may notice the following:

Yosemite 10.10 version:

<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleUSBMergeNub</string>
<key>IOClass</key>
<string>AppleUSBMergeNub</string>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>

 or

<key>OSBundleLibraries</key><dict>
<key>com.apple.driver.AppleUSBMergeNub</key>
<string>2.5.7</string>
<key>com.apple.iokit.IOUSBFamily</key>
<string>2.5.7</string>

`

Sierra 10.12 version:

<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleUSBHostMergeProperties</string>
<key>IOClass</key>
<string>AppleUSBHostMergeProperties</string>
<key>IOProviderClass</key>
<string>IOUSBHostDevice</string>

 or

<key>OSBundleLibraries</key>
<dict>
<key>com.apple.driver.AppleUSBHostMergeProperties</key>
<string>1.0</string>
<key>com.apple.iokit.IOUSBHostFamily</key>
<string>1.0.1</string>

`

If you have the wrong syntax or wrong references, the kext/patch will not work. This is why Skvo's Yosemite kext cannot work under El Capitan or Sierra.

Link to comment
Share on other sites

I compared OSBundleLibraries part from CellPhoneHelper from my HS system with that in your kext. They are same.

<key>OSBundleLibraries</key>
<dict>
<key>com.apple.driver.AppleUSBHostMergeProperties</key>
<string>1.0</string>
<key>com.apple.iokit.IOUSBHostFamily</key>
<string>1.0.1</string>
<key>com.apple.kpi.iokit</key>
<string>8.0</string>
<key>com.apple.kpi.libkern</key>
<string>9.0.0</string>
</dict>
<key>OSBundleRequired</key>
<string>Root</string>

Network/WWAN in System Information is empty and there is nothing about this card in USB section.

 

If I add USBInjectAll.kext with kext you posted I am getting this:

Dell Wireless 5809e Gobi™ 4G LTE Mobile Broadband Card:


  Product ID: 0x81b1
  Vendor ID: 0x413c  (Dell Inc.)
  Version: 0.06
  Speed: Up to 480 Mb/sec
  Manufacturer: Sierra Wireless, Incorporated
  Location ID: 0x14800000 / 2
  Current Available (mA): 500
  Current Required (mA): 500
  Extra Operating Current (mA): 0

And this

WWAN Information:


  Dell_Wireless_5809e_Gobi____4G_:
  Device Version Number: 6
  idProduct: 0x81b1
  idVendor: 0x413c
  locationID: 0x14800000 @ 0
  Modem Software: Unknown
  Network Name: Unknown
  WWAN_TYPE: GSM

I am confused. OSBundleLibraries match, and 0x413c is 16700 as referenced by idVendor.

 

I am sorry if i am missing something obvious.

Link to comment
Share on other sites

  • Administrators

Forget the OSBundleLibraries part. This was mentioned alongside CFBundleIdentifier in order to highlight differences in kexts between 2 x versions of OS X in terms of kext name. These are just 2 x sections of kext Info.plist file where the kext name is clearly & directly referred.

 

Now, I've never possessed such card, so no way for me to test a patch or confirm if Skvo's Yosemite patch still works in newer OS X/macOS versions. You'd have to try and contact him direct but he's not been around for over a year now... Or send me a card to test.

 

All I can say now is this:

  1. if you see your card under the USB tree, it's a good start; at least the card is detected by the OS.
  2. you have to patch your 10.13 CellPhoneHelper kext (or add the patch to FakeSMC) according to a manner similar to what Skvo did for Yosemite but adjusted for High Sierra's own kext.
  3. once you've added your patch, you have to repair kexts permissions and rebuild your cache, then reboot.
  4. you have to initialise the card in QMI mode through AT commands, as described in Skvo's thread (linked above).

 

Building on Skvo's original patch, I would say that the patch for High Sierra is as follows (within a IOKitPersonalities section, either in CellPhoneHelper or in FakeSMC):

<key>0x0413c/0x81b1 DW5809e (Sierra Wireless EM7305) 4G/LTE Modem</key>
<dict>
       <key>CFBundleIdentifier</key>
       <string>com.apple.driver.AppleUSBHostMergeProperties</string>
       <key>IOClass</key>
       <string>AppleUSBHostMergeProperties</string>
       <key>IOProviderClass</key>
       <string>IOUSBHostDevice</string>
       <key>IOProviderMergeProperties</key>
       <dict>
              <key>DeviceModemOverrides</key>
              <dict>
                     <key>ConnectionPersonality</key>
                     <string>Sierra GSM Personality</string>
                     <key>ConnectionScript</key>
                     <string>WWAN.ccl</string>
                     <key>DeviceContextID</key>
                     <string>1</string>
                     <key>DeviceModel</key>
                     <string>GSM</string>
                     <key>DeviceVendor</key>
                     <string>Sierra Wireless</string>
              </dict>
              <key>DevicePPPOverrides</key>
              <dict>
                     <key>LCPMTU</key>
                     <integer>1450</integer>
              </dict>
              <key>InfoCommands</key>
              <dict>
                     <key>ATCommands</key>
                     <dict>
                            <key>DirectoryNumber</key>
                            <string>+cnum</string>
                            <key>IMEI</key>
                            <string>+cgsn</string>
                            <key>IMSI</key>
                            <string>+cimi</string>
                            <key>Manufacturer</key>
                            <string>+cgmi</string>
                            <key>Model</key>
                            <string>+cgmm</string>
                            <key>ModemSW</key>
                            <string>+cgmr</string>
                            <key>Serial#</key>
                            <string>+gsn</string>
                     </dict>
                     <key>HiddenProperties</key>
                     <dict>
                            <key>CommandPortBaseName</key>
                            <string>wwan</string>
                            <key>ControlPortBaseName</key>
                            <string>wwan</string>
                            <key>DataPortBaseName</key>
                            <string>wwan</string>
                            <key>StatusType</key>
                            <string>CellPhoneGSM</string>
                     </dict>
              </dict>
              <key>Initializing</key>
              <true/>
              <key>InterfaceMapping</key>
              <dict>
                     <key>0</key>
                     <integer>wwanDM</integer>
                     <key>2</key>
                     <integer>wwanGPS</integer>
                     <key>3</key>
                     <integer>wwan</integer>
              </dict>
              <key>WWAN</key>
              <true/>
       </dict>
       <key>bcdDevice</key>
       <integer>6</integer>
       <key>idProduct</key>
       <integer>33201</integer>
       <key>idVendor</key>
       <integer>16700</integer>
</dict>

But, as stated above, I've no hardware and no way to verify this. You'll have to do the hard work... Sorry.

 

In case you ask, you set the card's USB composition to QMI mode through a direct (serial) connection through Terminal or putty and by issuing the relevant AT command. In Skvo's example, QMI mode is set when USBCOMP(osition)=6. You therefore have to issue the AT command that sets this: at!udusbcomp=n where n is the value that corresponds to QMI mode (6 in Skvo's example). To check the active mode, issue the AT command at!udusbcomp?. To check the possible values applicable to the command, type at!udusbcomp=?. According to the literature I read, you should begin your card settings session by the commands atz (good old modem reset to default profile) and at!entercnd="A710" before anything else. Once you've set the QMI mode, reset the card through an at!reset command.

https://techship.com/faq/category/cellular-modules-sierra-wireless/

http://www.embeddedpi.com/documentation/3g-4g-modems/raspberry-pi-sierra-wireless-mc7304-modem-qmi-interface-setup

https://www.computerhope.com/atcom.htm

 

God, haven't played with AT modem commands for 20 or 25 years !!! In that prehistoric time when 33.6k or 56k modems were all you got for dial-up access...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...