Note that the NEW thread is at http://forum.xda-developers.com/showthread.php?p=1801986
The topic maintainer (who has done a great job) has been fairly absent recently, which is why the thread has been continued elsewhere. The current topic also includes the information on how to do this all manually, without WMWifiRouter.
(End of Menneisyys' update; original original post follows.)
Breaking News!:
Chainfire has released WMWifiRouter v0.80. An app that automates the launching of Internet Sharing/Registry Changes/WiFi power Cycling/with a new 10 minute timeout fix/process! If you appreciate his work on this or his KaiserTweak application, feel free to donate something to him via PayPal.
IMPORTANT NOTES:
If you use this application, NO hacked .dlls are are needed/used. Ignore my (TalynOne's) tutorial, except for any sections referenced in Chainfire's notes below.
Make sure you have a working version of Internet Sharing installed, and tested, before trying to share it via WiFi.
WMWifiRouter info from ChainFire:
Changelog:
v0.80
Changed interface to use big icons and animations
Added new program icons, still needs some work though
Added option to make the log visible
Added about screen (with new logo)
Added options to create/remove shortcut in your program menu
Added extra registry backup/restore functionality
Added detection for ICS, with the optional error message
v0.76
Made "Unattended mode" the default power saving mode (seems to work for everybody)
Tweaked clean-up code
v0.75
Changed the power tweak with two different power saving modes: "idle" and "unattended". This fixed the power tweak for all users as far as I can tell.
v0.74
Changed the way ICS is launched and forced to connect (hopefully this will end the manual-connect issue once and for all)
Added code to prevent multiple instances
Added an icon
v0.73
Adjustments in power tweak
Adjustments in timings
Added registry tweaks for Sprint users
Put the configurable options in a menu
Added some code that cleans up your registry if the program crashed or you needed to soft-reset
Code cleaned up
v0.7
Added a power tweak
Made start sharing on start configurable (handy for troubleshooting)
Made quit when ICS quits configurable (handy for troubleshooting)
Added option to reconnect data connection when it drops
v0.6
Maintenance update, no new features added. The sole difference is that I rebuilt WMWifiRouter using a different widget set. The executable dropped 14-fold in size from 1.25mb to 93kb. This results in the application loading faster, consuming less storage, as well as less memory when running. This widget set is also lighter on the CPU, though I do not think that will be noticeable.
v0.5
Just a small maintenance update. In short, the app has simple become more responsive / usable:
App should be more responsive and load faster
'Loading' indicator is now used
Screen Toggle is disabled, as with further testing it causes too many problems
v0.4
Back to basics, all 'hacked files' removed. The name of your WiFi interface _should_ no longer matter.
New way to get around the 10 minute time out problem
Screen Toggle function added. Turns the screen off without disconnecting WiFi
WLAN state is recorded on start and restored on exit. So if you had WLAN turned on before you started WMWifiRouter, it will be turned on again after WMWifiRouter is done cleaning up after itself
More beers drank while making this version than during any other version!
The power tweak:
This replaces the old screen toggle. This should tell your device to not turn WiFi off when it goes into standby mode. On my Kaiser (TyTN II) this allows me to put the device into standby mode using the power button while the connection keeps being shared. Obviously this consumes a lot less power. I do not know if this will work on all devices, please let me know. Also note that while it usually works for me, it doesn't _always_ work, so try a few times. Wait for the connections to be established before putting the device into standby.
Upgrading:
Remove any old WMWifiRouter files you have
Follow the installation instructions
Installation:
Download the new zip HERE.
Unpack the zip file on your PC somewhere
Copy the WMWifiRouter.exe files to your mobile device
Usage:
Make sure you have an Ad-Hoc WiFi network configured. If not, follow TalynOne's instructions in the start of this thread.
Run WMWifiRouter.exe
Wait. WMWifiRouter does it's best to start ICS and initiate the connection, but this can take a few seconds. If the "ICS Status" label at the top if the WMWifiRouter screen says "Connected!", all should be well.
Usage Notes:
WMWifiRouter does it's best to launch ICS and initiate the connection, but I have noticed once or twice it didn't actually connect. When this happens, just task-switch to ICS and click "Connect" manually.
As a different hack is now used to prevent the 10-minute timeout problem, no hacked DLL's are used anymore, and your normal ICS tool is used. This does however lead to the ICS program screen saying you should "check your usb-cable" instead of it saying "connected". Don't worry about it
If your phone has a hardware WLAN switch (HTC Mogul), put this in the ON position before starting WMWifiRouter
Sets the IP of your WiFi to 192.168.0.1, which may break operation of regular USB cable Internet Sharing. If you have trouble getting regular USB Internet Sharing to work, read the FAQ titled "Help, when I go back to the non hacked version of Internet Sharing to tether via USB, it no longer works!", in TalynOne's tutorial for a possible fix.
So get testing all!
----------------------------------------------------------------
Now back to the regular tutorial...
Description:
A tutorial on how to share your mobile device's dial-up (GPRS/EDGE/UMTS/HSDPA/EV-DO, etc. cellular) connection over an Ad Hoc WiFi connection.
Starting with Windows Mobile 5 AKU3 Microsoft included an "Internet Sharing" application, for free, that allowed you to share your Internet connection (like the commercial apps PDANet and USBModem). But all of these applications only supported sharing your dial-up connection via a USB cable or Bluetooth PAN/DUN connection. This hacked version lets you share your Internet connection via an Ad Hoc WiFi network. This useful, among other reasons, if you want to share your Internet Connection with a device that doesn't support Bluetooth PAN, or USB Host connectivity, but does support Ad Hoc WiFi networks, such as a Sony PSP or iPod Touch.
Introduction:
To find out how this method differs from fluxist's read the FAQ located below. The tutorial is very verbose, because I think it's better to include too much information, rather than not enough. Expect a good number of edits/updates/corrections to this tutorial because of its length. I'm also hoping to include as much information as possible in the hopes that someone smarter than me can use this information to come up with an even better solution. This tutorial is HTC Mogul centric (since that's what I have), and includes certain notes that only apply to the Mogul (I will specify this in the note itself).
Requirements:
A Windows Mobile device with a working version of the Internet Sharing application (introduced in Windows Mobile 5 AKU3).
The ishare_over_wifi_usb_edition_v0.2.zip archive attached to the bottom of this post.
A hacked "intshare.dll" that's been modified to share you connection via WiFi through the USB selection in the "Internet Sharing" application, for the WiFi radio on your mobile device. Look at FAQ below for a list of included hacked .dlls, and the known mobile devices that they are for.
A client device that supports Ad Hoc WiFi networks.
Setup Summary
Setup an Ad Hoc WiFi connection on your mobile device
Set a static IP address on your WiFi device of "192.168.0.1" with a subnetmask of "255.255.255.0".
Setup an Ad Hoc WiFi connection on your client device
Download/uncompress the contents of ishare_over_wifi_usb_edition_v0.2.zip to a folder on your mobile device (eg. \Program Files\WiFiShare).
Copy the correct hacked "intshare.dll" into the same folder as you created in the above step (so it's in the same folder as "intshrui.exe").
Connect Summary
Make sure the Wifi radio is off.
Run the new "intshrui.exe", make sure USB is selected from the list, and press "Connect" (left softkey).
Turn your Wifi radio on.
Connect with your Ad Hoc client device (Laptop, PSP, etc...) and enjoy the INTARWEB!
Optional Steps
Setup a shortcut to the new "intshrui.exe" from the archive.
Setup a shortcut to the Wi-Fi control panel item.
Setup and create a shortcut to the included Mortscript ("Share&KeepSharingViaUSB.mscr").
Apply the workaround to overcome the 10 minute connection timeout after connecting with the Internet Sharing app.
Sprint HTC Mogul/SERO Notes
It seems Sprint is up to shenanigans in regards to tethering for SERO users. Those of you running Sprint ROMs should navigate to the following registry key "HKEY_LOCAL_MACHINE\Comm\InternetSharing" and delete the string value named "Extension". This will allow you to connect to the Internet via the Internet Sharing app without the dreaded error 67/authentication errors. Previous to this fix, Mogul SERO users would have to connect to the Internet via another method (such as starting Internet Explorer first) before pressing the Connect button in the the Internet Sharing application.
If you're really paranoid (it has been concluded these entries have no meaning when using Internet Sharing), using a registry editor, navigate to the "HKEY_LOCAL_MACHINE\Software\OEM\WModem" key, and set the "CheckProfile", "Multi-NAI" and "WModemDUN" DWORDS to a decimal value of "0".
Optional: Setting up a shortcut to the "Wi-Fi" applet
In this tutorial we will be accessing the "Wi-Fi" applet several times (and possibly every time you connect via Internet Sharing as part of the 10 minute timeout workaround). To prevent having to go to the Start->Settings->"Connections" tab every time you wish to access this applet, we can create a shortcut to this applet, by either:
Manually creating a shortcut link to it ("21#ctlpnl cplmain.cpl,17").
Going to the "Wi-Fi Settings Shortcut" folder in the .zip package and installing the "Network Cards ShortCut.cab".
Setting up an Ad Hoc WiFi connection on your mobile device
Make sure your WiFi radio is on.
Go to Start->Settings->"Connections" tab.
Select "Wi-Fi" applet.
On the "Wireless" tab, select "Add New...".
Pic
Type any network name you would like for your Ad Hoc network (eg. WMobileAdHoc)
Make sure the "This is a device-to-device (ad-hoc) connection" option is checked.
Pic
Select the "Next" button.
On the "Configure Network Authentication" screen, select "Open" for the Authentication type, and "Disabled" for Data Encryption. For the purposes of testing, lets verify the connection works without encryption, if it does, you can modify your Ad Hoc connection properties later to enable the encryption mode of your choice.
Pic
Select the "Next" button.
Select "Finish" on the final screen.
Pic
Configuring a static IP address on your WiFi device
Go to Start->Settings->"Connections" tab.
Select the "Wi-Fi" applet.
On the "Network Adapters" tab, select your WiFi device (for the HTC Mogul this is the item listed as "IEEE 802.11b/g Compatible Wi-Fi Adapter").
Pic
On the "IP Address" tab, select the "Use specific IP address" radio button. For the IP address enter the value "192.168.0.9" with a Subnet mask of "255.255.255.0".
Pic
OK the dialog.
Connecting to your Ad Hoc WiFi connection on your mobile device
Make sure your WiFi radio is on.
Go to Start->Settings->"Connections" tab.
On the "Wireless" tab, to avoid automatically connecting to other infrastructure WiFi networks in the area make sure, under the "Network to access:" section, to select the "Only computer-to-computer" option.
If you only have one Ad Hoc network defined, Windows Mobile should now attempt to automatically connect to it. If you have multiple Ad Hoc networks defined, or to manually connect to your Ad Hoc connection, in the list of the available connections, tap-and-hold the just added network, and select "Connect" from the context menu.
Pic
Setting up/connecting the Ad Hoc WiFi connection on your client device
Since the specific procedure on how to connect to Ad Hoc networks greatly varies from device to device (Windows XP/Vista/Sony PSP/MAC/etc...), it's impractical to document each possible combination. In general just fire up your client and search for nearby networks, making sure you're not only looking for access points, but also peer-to-peer (Ad Hoc) networks. This (looking for both types of network) is the default with desktop Windows Wi-Fi clients, other platforms might be needed to be manually instructed to list available Ad Hoc connections.
Installing the hacked Internet Sharing application
From the attached zip file copy the files "intshrui.exe", "ipnat.dll", and optionally "Share&KeepSharingViaUSB.mscr" to a new folder on your device (eg. \Program Files\WiFiShare).
Copy the hacked "intshare.dll" for your WiFi device from the "hacked_dlls" folder in zip file, into the folder you created in the previous step. Read the FAQ question "Which WiFi radios have you included a hacked intshare.dll" below to figure out which hacked .dll you should use.
Create a shortcut to "intshrui.exe" on your start menu for easy future access.
Connecting & Sharing the Internet via Wifi
At this point you should have already setup your Ad Hoc WiFi connection, and set a static IP address for your WiFi device. If you haven't already, do so now.
Make sure the WiFi radio is off.
Start the new "intshrui.exe" Internet Sharing application.
Make sure "USB" is selected (NOT Bluetooth PAN!)
Press the "Connect" button (left softkey).
Turn the WiFi radio on.
Ignore the fact that the satus displays "Check USB cable connection". This is normal.
Pic
At this point you can connect your client machine to your Ad Hoc network, and it should receive an IP address from the DHCP service running as part of the "Internet Sharing" application. You are now ready to enjoy the glories of the Internet!
Workaround for the 10 minute timeout
You may notice, at least on my device, that "Internet Sharing", at exactly 10 minutes of usage, disconnects from the Internet, while you AdHoc WiFi stays on. This timeout is built into "intshrui.exe". Remember in the previous procedure how the status displayed as "Check USB cable connection", the status line needs to change to "Connected" for the timeout not to occur. This is how:
Make sure "Internet Sharing" is active and connected, but the status message still says "Check USB cable connection".
Pic
Go to Start->Settings->"Connections" tab.
Select the "Wi-Fi" applet.
On the "Network Adapters" tab, select your WiFi device (for the HTC Mogul this is the item listed as "IEEE 802.11b/g Compatible Wi-Fi Adapter").
Pic
At this point we need to change something about the IP configuration that won't matter/affect anything, such as the alternate WINS address. It needs to be different from the current configuration or else the settings won't apply, which is needed for this workaround. On the "Name Servers" tab, select the "Alt Wins" entry and enter an arbitrary, unused, IP address value such as "192.168.0.253".
Pic
OK the dialog.
Go back to the "Internet Sharing" application and the status should now display as "Connected"! The timeout should no be disabled for this connection session.
Pic
I've tested this many times and have been on the Internet for more than 2 hours without a disconnection in this state! If you get disconnected for any other reason you will have to reapply the workaround again. Remember to change the IP address to a different value so that the change applies, alternating between "192.168.0.253" and "192.168.0.254" should work fine. It just needs to be different value from the immediate previous setting. I've tried many different things to get the status to change to "Connected" via other methods, this is the only one I so far found to work.
"Share&KeepSharingViaUSB.mscr" Mortscript
This script is included in the attached .zip file To use this script you must first download and install MortScript from here:
http://www.sto-helit.de/index.php?module=download&action=view&entry=65
or here:
http://www.pocketpcfreewares.com/en/index.php?soft=1448
This is an adaptation of Xiou's Share&KeepSharing script.
It turns off Wifi radio, starts hacked version of Internet Sharing app, connects and turns WiFi radio on. Once one valid connection has been made, reconnects if Internet Sharing enabled status status changes to disabled (ie. a disconnect occurs). Also, keeps device from going into standby mode, to prevent loss of WiFi connectivity.
It's heavily documented so it should be fairly easy to view, modify and understand by looking at it in a text editor.
Troubleshooting/Tips:
My connection seems flaky/slow, how can I fix it?
If you have Bluetooth radio is on, try turning it off. On some devices, such as the HTC Mogul, the antenna for the WiFi and Bluetooth devices are shared, and WiFi performance can be greatly degraded when both are on. I've personally experienced a situation where I've been connected to a regular WiFi network connection, and when transferring files, the transfer speed was terribly slow. Turning off Bluetooth greatly sped up the file transfers.
Don't place your mobile device too close to the device you're connecting to. If the devices are too close your connectivity could get flaky.
Upping the power level of the WiFi device may help (at the sacrifice of battery power drain). On the HTC Mogul this can be done by going to Start->Settings->"Connections" tab and selecting the "Wireless LAN" applet, then on the "Power Mode" tab, slide the Power Save Mode slider all the way to the left.
You stay connected via WiFi, but Internet Sharing gets disconnected every 10 minutes
Make sure you're using the 10 minute disconnect workaround documented above. Also, you can try the included Mortscript (Share&KeepSharingViaUSB.mscr), or better yet, use Chainfire's WMWifiRouter application.
Help, when I go back to the non hacked version of Internet Sharing to tether via USB, it no longer works!
For some reason the IP address of your virtual USB ethernet device gets blanked out sometimes, to fix this:
Go to Start->Settings->Connections Tab->Wi-Fi applet
On the Network Adapters tab, choose "Remote NDIS Host"
Set the IP to 192.168.0.2
Set the Subnet Mask to 255.255.255.0
This doesn't work, what else can I try?
Read the FAQ "My device is not in the list and/or I don't know what the device name for my WiFi device is, how do I find out?" to make sure that a hacked .dll exists for your device and is copied into the same folder as "intshrui.exe". If one doesn't exist you can request one be made by posting in this thread, with the WiFi identifier of your device (please provide the name of your device too). You can also create your own hacked .dll by reading the FAQ "How did you hack intshare.dll?".
Try Chainfire's applicaton, available at the top of the thread HERE
Try fluxist's methods HERE (try the non hacked .dll method first)
FAQ:
How is this different from fluxist's hack?:
It redirects USB instead of Bluetooth for sharing the Internet Connection, and works of an independent copy of intshrui.exe, so none of your original files/functionality gets effected. By redirecting the USB functionlity, instead of Bluetooth, you don't have to deal with the Bluetooth visibility prompt, and your Bluetooth radio doesn't get turned on by the Internet Sharing application. On some devices, such as the HTC Mogul, the antenna for the WiFi and Bluetooth devices are shared, and WiFi performance can be greatly degraded when both are on. I've personally experienced a situation where I've been connected to a regular WiFi network connection, and when transferring files, the transfer speed was terribly slow. Turning off Bluetooth greatly sped up the file transfers. Also the method allows for the 10 minute timeout elimination workaround described above. More information is located in the FAQ "How did you hack intshare.dll?".
Why would I want to share my phone's data connection over WiFi, as opposed to over Blueooth or USB?
There are many reasons, including:
With 3G technologies, such as EVDO, phone data speeds can easily exceed what Bluetooth supports (Bluetooth v1.2 - 1 Mbit/s, Bluetooth v2.0+EDR - 3 MBit/s). This is not counting the overhead taken by the protocol itself.
The ability to share with multiple clients. I tested with my laptop and a Dell Axim X50V connected to the Ad Hoc network, and both were able to use the shared connection on the Windows Mobile device at the same time just fine!
WiFi data communication can be encrypted with industry standard encryption, Bluetooth sharing is not.
WiFi range tends to be typically much longer than most Bluetooth devices.
You may want to share your data connection with a device that does not have Bluetooth PAN or USB Host connectivity, but can connect to Ad Hoc WiFi devices, such as an iPOD Touch.
By using this will I be charged by my phone carrier?:
Generally, this will incur the same charges as using the Internet on your phone. If you have an unlimited data plan, you should be fine. You are responsible for any charges you may incur due to lack of sufficient testing.
Can secure my WiFi connection ?
Sure, when setting up your Ad Hoc connection just enable an encryption method (such as WEP or WPA). Make sure the encryption method you choose is supported on both your Windows Mobile and client device.
Which devices support Ad Hoc networks?
Almost every device that supports normal Wifi networks, including the Sony PSP, Apple iPhone, and Apple iPod Touch.
I have a SmartPhone, how do I set my IP Address?
I don't have a SmartPhone, but luckily PocketPC Expert Menneisyss does, and has found a solution. Since I don't have a SmartPhone I'm going to plagiarize his solution for you here:
Download/install the IP profile Manager CAB file HERE (mirrored it HERE), which makes it possible to fill in the IP addresses on MS Smartphone (Windows Mobile Standard) devices as well. That is, with this tool, you can use MS Smartphone models having Wi-Fi support like the HTC Dash / s620 and Vox / s710. A poster reported success with the HTC Dash / s620. With the Vox, I haven’t managed to make internet sharing work, but you may have better luck.
After installing and starting the application, you’ll need to select your WiFi networking device (as can be seen in the following screenshot, it’s "TNETW12511" on the HTC Vox; if your model has the default TIACXWLN1, then, no such dialog will be presented):
Pic
You'll then need to select Options / Add Profile; there, just fill in the two numbers (IP:192.168.0.9 / Subnet Mask:255.255.255.0), making sure you also give the profile a name so that it is saved and becomes selectable:
Pic
Then you can select the new profile:
Pic
And restart the device as prompted:
Pic
After restart, follow the exact same procedure as on the Pocket PC.
How did you hack intshare.dll?
I took fluxist's hacked .dlls, and using a HEX editor replaced every instance of the string "RNDISFN1" (which refers to the USB device) with the WiFi identifier. If the string was too long and encroached into the "BTPAN1" string, then I moved the "BTPAN1" string over. I have no idea if this breaks the functionality of using the "Blueooth PAN" entry in the Internet Sharing app for sharing over WiFi, I haven't tested it, and you should never use it regardless. The top three occurrences of the WLAN identifier (TNETW12511 for the Mogul) are related to my USB hack, the last (fourth) occurrence of the WLAN identifier is a left over from fluxist's Bluetooth hack.
This hack is different from a fluxist's registry change .dll hack. In my hacked .dll I replaced EVERY reference to the USB device (RNDISFN1), to the WiFi device in question (TNETW12511 for the Kaiser/Mogul). So if you just perform a registry change with the original version of the intshare.dll, the "Status" messages the "Internet Sharing" app looks for/displays are related to the USB device. In my hacked version, the "Status" messages the app looks for/displays are related to the actual WiFi device. So changing WiFi IP address properties, for the 10 minute workaround, while running the non hacked version will have no effect, because the non hacked .dll version is monitoring the USB device, not the WiFi device.
For which WiFi radios have you included a hacked version of intshare.dll?
TIACXWLN1
-Artemis / HTC P3300
-Pocket Loox 718/720
-Hermes / HTC TyTN / XDA trion / MDA Vario II / VPA Compact III / SPV M3100 / Dopod CHT 9000 / Dopod 838 Pro
-Athena / x7500
TNETW12511
-HTC Titan / Sprint Mogul / Verizon XV6800 / P4000
-HTC TyTN II / Kaiser / AT&T Tilt / 8925 / P4550
-Elf / HTC Touch
-HTC Vox
TNETWLN1
-Universal / Qtek 4040 / XDA-IV / SPV M5000 / MDA-IV / i-mate 2005
-HTC Wizard / Qtek 9100 / i-mate K-JAM / MDA Vario / O2 XDA Mini S / SPV M3000 / Cingular 8125 / T-Mobile MDA / Dopod 838 / VPA compact II
WLAN11g1
-Terralogic Toughnote DA05-M Ruggedised PDA
SWLD25SP1
-E-ten Glofiish X500
-Samsung SGH-i600
GSPI86861
-Sharp EM-ONE
CheetahSDN1
-O2 XDA Flame
CF8385PN1
-O2 Atom LIFE
My device is not in the list and/or I don't know what the device name for my WiFi device is, how do I find out?
Go to Start->Settings->"Connections" tab.
Select the "Wi-Fi" applet.
On the "Network Adapters" tab, make note of the name of your WiFi device (for the HTC Mogul this is the item listed as "IEEE 802.11b/g Compatible Wi-Fi Adapter").
Using a registry editor, search the registry using the name you noted in the previous step. The second occurrence (it's slightly different from the first, it has a suffix "1" after the registry key name, and also has a "Wireless" value) will be something like this:
Code:
[HKEY_LOCAL_MACHINE\Comm\[b]TNETW12511[/b]]
"DisplayName"="IEEE 802.11b/g Compatible Wi-Fi Adapter"
"Group"="NDIS"
"ImagePath"="TNETW1251.dll"
"Wireless"=dword:00000001
Look up the name of the subkey, which is [HKEY_LOCAL_MACHINE\Comm\TNETW12511]. Of this, you’ll only need the last subkey name component (TNETW12511).
Other reading of interest:
Bluetooth specs:
http://en.wikipedia.org/wiki/Bluetooth
Internet sharing description & why Microsoft Mobile team removed Bluetooth DUN:
http://blogs.msdn.com/windowsmobile/archive/2007/04/17/why-did-we-remove-bluetooth-dun.aspx
The new dial-up network model of the WM5 AKU3:
http://www.pocketpcmag.com/blogs/index.php?blog=3&p=1415&more=1&c=1&tb=1&pb=1
A tutorial of setting up and using Wi-Fi peer-to-peer (Ad Hoc) connections between Pocket PC's:
http://www.pocketpcmag.com/blogs/index.php?blog=3&p=588&more=1
Dial-up Networking Through Bluetooth Under WM5 AKU3 / WM6:
http://www.pocketpcmag.com/blogs/index.php?blog=3&p=2121&more=1&c=1&tb=1&pb=1
Unrestricted BT PAN server with the MS BT stack:
http://www.pocketpcmag.com/blogs/index.php?blog=3&p=2230&more=1&c=1&tb=1&pb=1
Links for developers/hackers :
Sample for using Internet Sharing API:
http://groups.google.com/group/micr...4aaa543efc216f/a9c637f89b0575b6?lnk=st&rnum=1
Configurable TCP/IP Configuration Parameters in WinCE 3.0:
http://msdn2.microsoft.com/en-us/library/ms881801.aspx
Controlling the Radio Devices:
http://www.teksoftco.com/articles/article 007/radiodevices.htm
802.11 WLAN WiFi : Power Mini FAQ - Windows CE:
http://blogs.msdn.com/cenet/archive/2006/12/14/802-11-wlan-wifi-power-mini-faq-windows-ce.aspx
WiFi toggling fix:
http://forums.sbsh.net/index.php?showtopic=17139&pid=175405&mode=threaded&start=
New Windows Mobile 6 State and Notifications Broker State Values:
http://www.pluralsight.com/blogs/jimw/archive/2007/04/20/46866.aspx
Internet Connection Sharing for Microsoft Windows CE MSDN documentation:
http://msdn2.microsoft.com/en-us/library/aa924710.aspx
http://msdn2.microsoft.com/en-us/library/ms901927.aspx
http://www.microsoft.com/technet/archive/wce/evaluate/sharece.mspx?mfr=true
Thanks/Credits:
Chainfire - For his awesome WMWifiRouter application.
fluxist - For the original hack!
Menneisyys - For his blogging on the subject.
Xiou's - For his Share&KeepSharing script.
gthing - For the XDA-Developers Hermes Accesspoint Wiki.
luv2chill - Sprint Mogul Internet Sharing Connect Fix. (post by luv2chill).
electronicrice - Multi-NAI disable hacks for the Mogul
Final Thoughts/Notes:
fluxist's tutorial instructs you to set the IP address to 192.168.1.1, I instruct you to set it to 192.168.0.9. This is so it matches up to what I found in "intshare.dll". When I was testing sometimes my laptop would get a 192.168.0.0 network address, even when my mobile device was statically set to a 192.168.1.0 network address.
My expertise is in network/system administration/repair and software development. I can easily create code, but when it comes to hacking someone else's compiled code, I'm a complete novice. The ideal solution is if a one click solution could be written to change the WiFi configuration to Ad Hoc, set a static IP address, connect to the Internet with the Internet sharing app, have it stay with a status of "Connected", and reconnect on loss of connection.
I'm figuring a skilled hacker/cracker should be able to patch "intshrui.exe", where I believe the actual 10 minute time out exists, and get rid of it. When opening this file in a Hex editor, I noticed the strings "HostConnectTimeout" and "CellConnectTimeout" inside.
Another solution would be to figure out the undocumented APIs to build a new Internet Sharing application.
intshare.dll exposes the following exports: InternetSharingEnable, InternetSharingDisable, RegisterForInternetSharingNotifications, and DeregisterForInternetSharingNotifications.
ipnat.dll exposes the following exports: IPNat, LanaUp, NAT_Close, NAT_Deinit, NAT_IOControl, NAT_Init, NAT_Open, NAT_Read, NAT_Seek, NAT_Write, and NatConfigure.
The included "Share&KeepSharingViaUSB.mscr" Mortscript uses vjvolubilis.exe (available at http://www.vijay555.com/?Releases:VJVolubilis) to toggle the Wifi radio off and on, but this app is not compatible with the HTC Mogul. It would be great if someone can suggest a program that would work with Mortscript and the HTC Mogul.
--------------------
Changelog:
v0.2
Added hacked dll for "CheetahSDN1" (O2 XDA Flame)
Added hacked dll for "CF8385PN1" (O2 Atom LIFE)
Changed IP address in hacked intshare.dlls from 192.168.0.1 to 192.168.0.9 to prevent possible conflicts.
Changed "Share&KeepSharingViaUSB" Mortscript.
Added "StopSharingViaUSB" Mortscript.
v0.1
Initial Release
WOW!!
All I can say is Wow. Thank you very much for the effort and time that you put into creating this. I am currently using an Athena and the files and tuturial that you setup work great. Thanks for the work. It makes my Athena just that much better. I will let you know if I run into any problems.
Great, congrats, will frontpage this!
Awesome, thanks.
wow...thanks a million
don't dare read it now, but wow...thanks...speechless
another wow
thanks for all the time and effort you put into this. you definitely went out of your way to make sure this was easily understandable and complete. i applaud you for your hard work.
great tutorial, my only question is when would you use this. When you have a laptop with no wireless card?
Ack, I just realized my poor topic title. No, if you wanted to use Internet Sharing with a USB cable, just use the one built into your Windows Mobile, no hacks needed.
This is for sharing via WiFi, the USB cable doesn't even have to be connected for this hack.
MWillis561, which WiFi Radio does the Athena use (so I can document it)?
We us TIACXWLN1
specv said:
great tutorial, my only question is when would you use this. When you have a laptop with no wireless card?
Click to expand...
Click to collapse
On the contrary. When you have a non-BT PAN-capable client still able to communicate over Wi-Fi P2P networks - for example, a Symbian or a Windows Mobile phone. I've used both (Symbian: NOkia N95; Windows Mobile: a lot of different clients) in this config; they all worked great. Check out my related articles.
This is ideal for anyone with a mac running an older operating system. (i.e. 10.3)
I've spent a few hours to hack together an app that does all these things without needing any of the hack DLL's or scripts (it does all the registry changes at the right times, enable/disable WLAN at the needed times etc).
There's just one thing I can't seem to get around, and that's the 10 minute timeout thing. Just doing things manually, I can't get the 10 minute disconnect workaround to work as described (and if I can't even do that, how am I going to get it to work programmatically? ). My cable stays in 'disconnected' state. Help?
Chainfire said:
I've spent a few hours to hack together an app that does all these things without needing any of the hack DLL's or scripts (it does all the registry changes at the right times, enable/disable WLAN at the needed times etc).
There's just one thing I can't seem to get around, and that's the 10 minute timeout thing. Just doing things manually, I can't get the 10 minute disconnect workaround to work as described (and if I can't even do that, how am I going to get it to work programmatically? ). My cable stays in 'disconnected' state. Help?
Click to expand...
Click to collapse
Try doing it manually WITH the hacked .dll for the Kaiser, see if that helps.
TalynOne said:
Try doing it manually WITH the hacked .dll for the Kaiser, see if that helps.
Click to expand...
Click to collapse
Still no go!
I think I have duplicated what your 10 min fix does though, in my app. I've uploaded it to http://www.jongma.org/WMWifiRouter/WMWifiRouter.zip.
It would be great if you (or someone else) could give it a go and see how (if) it works for you, including the timeout.
Usage is simple, put the EXE on the phone. All you need to have is that ad-hoc connection set up. Run the EXE, it will do some registry modifications, turn of WLAN and start up IS. Put IS on USB and connect, the EXE should turn WiFi back on including the reconfiguration. One note though, once you disconnect in IS you have to really close IS and restart the EXE as well.
Thanks.
Ok, for the Timeout hack to work it has to be running the hacked version of the .dll, you can not simply get away with registry changes. The hacked dll does more than just set the registry. When starting your app stand alone it started the non hacked "Internet Sharing" app, which never applied the Timeout workaround properly. When starting my hacked version first, getting a valid Internet AND AdHoc connection first, and then executing your .exe it worked half the time. It seems your .exe, every other time, set the WiFi adapter to DHCP mode.
Change it so it runs the hacked version, doesn't perform any registry changes on the Internet Sharing Private/Public interface keys (since the hacked .dll already does this), and changes the ALT WINS address to a new value from its current value, make sure you don't set the WiFI adapter to DHCP at any point.
Great job! Looks like we're getting close.
TalynOne said:
Ok, for the Timeout hack to work it has to be running the hacked version of the .dll, you can not simply get away with registry changes. The hacked dll does more than just set the registry. When starting your app stand alone it started the non hacked "Internet Sharing" app, which never applied the Timeout workaround properly. When starting my hacked version first, getting a valid Internet AND AdHoc connection first, and then executing your .exe it worked half the time. It seems your .exe, every other time, set the WiFi adapter to DHCP mode.
Change it so it runs the hacked version, doesn't perform any registry changes on the Internet Sharing Private/Public interface keys (since the hacked .dll already does this), and changes the ALT WINS address to a new value from its current value, make sure you don't set the WiFI adapter to DHCP at any point.
Great job! Looks like we're getting close.
Click to expand...
Click to collapse
Same link. Updated the EXE so that it looks for intshrui in the local folder first. If it finds that it will not perform the ICS registry hacks.
You mention however that the hacked DLL's do more, I thought the only thing changed about it was the interface names? I don't see why that would be of influence (as that can be fixed through reg, as obviously with all the normal files / no hacks, I can use the app and it just works for me).
The changes applied are indeed to the WINS adapter, I do not touch DHCP. Though what you may be seeing is at the moment you disconnect, the app restores the default registry settings for the wireless adaptor, which has DHCP enabled. Furthermore I'm not entirely sure I actually have to change any value. I think the control panel application simply doesn't "apply" if there weren't any changes, force the driver to rebind the adaptor with IOCTL messages like I do now, would probably work with or without modifications.
I have searched several times, usually while on the road, so only now and then, but all total I must have searched for weeks worth of days trying to find an answer.
I found one.
What I wanted to do was take my T-Mobile G1's GPS receiver AND its Internet connection and forward both of these on to my laptop running Windows XP. I really would prefer a Linux solution, and I found one, but while in Linux my needs change slightly enough that the solution I found wasn't worth trying at that time. So I used Windows. As will most other people reading this, so.... >shrug<
I know it's not a very popular topic (not that it's non-popular; it's just that most people don't care enough to worry about it). However, that said, I know some poor pleb is out there trying to do exactly the same thing I found out how to do with exactly the same hardware and software, so I wanted to post how I did it.
MODS: I've not found anything detailing specifically this method on XDA and I did search before, but Google and I have been having communication problems in our relationship so I haven't been as proficient with results as usual. Therefore, if this has already been posted by someone else somewhere else, please forgive me, and feel free to pop a link in here, or merge, or whatever is appropriate. -- Thanks.
--------------------------------------------------
Required:
Rooted phone. which will require...
A computer with a USB port AND a WiFi device of some kind.
Install on the computer:
* the Android SDK
* com0com
* com2tcp - Which MIGHT be included in com0com, I don't remember.
* Something to use it with (Google Earth, for instance)
And on the phone, install the following:
* Android-Wifi-Tether (WiFi Tether for Root Users)
* ShareGPS <-- Just a link to a page with a QR code. The dev's page says to get it from Android Market.
That's a lot of stuff, but if you NEED this, it's worth it.
First and foremost, get ADB working. Beyond the scope of this post, go to Google for more info on doing this. Make sure, though, that your phone's debugging is enabled (Menu > Settings > Applications > Development).
Once ADB works, install the software above in the appropriate places. For com2tcp, put its executable file somewhere in the system path. I used c:\windows\system32 for it (and for ADB, come to think of it) but many people might balk at this, as though it's some holy ground on which lowly mortal files shalt not tread. Whatever. Find a hole it'll fit in and make sure it's in your system path.
After installing ALL of the above software, do this, in this order:
1) Connect the phone to the laptop via USB.
ON THE LAPTOP
2) Open com0com from your start menu.
3) Either remember these names for the com ports (at the top of the com0com window) OR name them more memorably. I'll use COM1 and COM2, but ONLY BECAUSE MY LAPTOP DOESN'T ALREADY HAVE THESE TWO PORTS. You can call them PORT1 and PORT2 if you want, or CHUNKY1 and CHEWY234 but I used COM1 and COM2. So, the rest of these instructions will be the way I did it -- you'll have to adjust them accordingly, and if you're not smart enough to figure out how to do so or what I mean by that, then I can't help you. After naming them, hit APPLY.
3b) On your first time running com0com, it'll want you to install new devices, twice. LET IT. Just let it do the automatic thing and you'll be fine.
4) Open the command prompt (Windowkey-R, "cmd", ENTER) (or Start, Programs, Accessories, Command Prompt).
5) In the command prompt, type in:
Code:
adb forward tcp:50000 tcp:50000
and hit enter. This creates the forwarding of the phone's internal communications to the USB (I think). Assuming there are no errors (if there are, you either did something wrong or you did something wrong (like getting ADB working)) then type in the following
Code:
com2tcp --telnet \\.\COM1 127.0.0.1 50000
and hit enter. This uses the above-created forward of comms and attaches it to the virtual COM port made with com0com in step 3. This time, assuming there are no errors, you should see some diagnostic output.
ON THE PHONE
6) Open ShareGPS.
6b) In ShareGPS, Menu > Settings, select Use USB and deselect Use Bluetooth. The Format is irrelevant to what we're doing, and Create NMEA is not needed for the HTC Dream hardware as the output already is in NMEA format AFAICT. Back out of the settings screen.
7) Tether your Internet connection. OPTIONAL: If your laptop already has Internet access somehow else, you can ignore this step.
8) Open and connect your mapping application on the laptop. YMMV, depends on your software, I can't help you here. In Google Earth, go to Tools, GPS, and click the REALTIME tab. Select NMEA, not Garmin. Select other options as appropriate (like auto follow). Hit start. You should, if it works, see diagnostic output in your command prompt window as well as a connection message on the phone in ShareGPS. In Google Earth, YMMV, but I at first saw no icon, and second I saw a little blue dot. Problem is, in GE, it quickly disconnects and reconnects. You might have better luck with GooPs Free.
If you use GooPs Free, it might not pop up in front. Look down in your system tray, and you'll find the GooPs icon. Right-click it, and select "Open GooPs". you'll be presented a small window. Click options. For the COM port, use one of the two that you made with com0com (if one doesn't work, try the other). Default rate worked for me, Hardware flow control. Autoconnect, Autoscan are set for me. The rest of the options should be pretty self-explanatory. If not, I can't help you (it's midnight here and I'm oh so tired right now) (but I REALLY wanted to get this posted to help anyone else). IF everything works, you'll have an obnoxiously large 3D arrowhead right where you are in Google Earth. If not, you'll have to troubleshoot the errors.
-----------------------------------------
Feel free to ask questions in reply, as I'll of course subscribe to this thread, but understand that I can't answer all questions as I barely understand enough to get this working myself.
ALSO, KNOW THIS: YOUR PHONE WILL BECOME LESS STABLE. I noticed a significant increase of unprompted reboots of my phone after futzing with these programs. Sometimes it lasted a few minutes, but usually it goes for hours. Further, they don't seem to be an issue until I start GPS tethering, so maybe it's not so bad.
You CANNOT use GPS Tether and USB Internet Tether at the same time. If you need to tether your phone's Internet, install WiFi Tether for Root Users (link above) and set it up accordingly. You should be able to launch WiFi tether at any time, but I would recommend doing it before forwarding the ADB GPS ports.
I do sincerely hope this helps someone, and if not, hopefully it will save time and not waste it.
Best Regards to All
Edits below:
WARNING: IF YOU PERFORM THIS HACK, AND THAT'S WHAT IT IS, YOU **WILL** SEE SUCH A HUGE DRAIN ON YOUR G1'S WIMPY LITTLE BATTERY THAT EVEN WITH IT PLUGGED IN AND "CHARGING" YOU WILL STILL HAVE A DRAIN UPWARD OF 35 PERCENT PER HOUR. ALSO, YOUR PHONE WILL GET HOT. NOT WARM. HOT. THINK ABOUT IT: YOU'RE CHARGING, YOU'RE RUNNING WIFI, AND YOU'RE RUNNING GPS ALL AT THE SAME TIME YOUR CUSTOM HACK ROM IS RUNNING YOUR CPU AT ITS MAXIMUM SPEED.
YOU HAVE BEEN WARNED.
How to in Linux
Hai
I am using an Ubuntu desktop...and might am interested in knowing hw to do it in Linux?
Regards
kumar
I wish I could help with that. While I use Linux too (Ubuntu, I think, on my laptop and Sabayon on my desktop), and used to use it as my primary OS, I do not know enough about it to do this. For starters, I've never gotten a decent working load of Google Earth on my laptop in Linux. When I was researching this, I found that 99% of what I found was based in Windows, and I was short on time so trying things in Linux was an unaffordable luxury. Everything takes me forever in Linux because I have to learn it first, and then start screwing with it.
For starters, though, you have to get ADB working, and then port forwarding the GPS to the phone's USB (done through ADB). From that point, I think Linux might *just* be able to handle getting the data visible to apps like Google Earth natively. I would start my search with "usb-to-telnet forwarding". Or "accessing USB with telnet", since really once you do the ADB forward, the phone is sending data direct to the USB port.
Edit: Of course, you'll also still need ShareGPS on the phone... I think...
I really don't know enough though to be able to provide the help I'm thinking you need/want, but hopefully this can at least get you started on the right track. If you figure it out, please post back to this thread...
Cheers,
CJ Chitwood
Linux Solutions???
I am going to dive into getting this working with Ubuntu on my EeePC. Right off the bat I'm thinking why not send the GPS to the netbook over bluetooth and use use the USB tether for the internet access? I'll see what my untrained brain can come up with.
Thanks for the post on this issue, I've been looking into this for 2 years.
Right, that should work if your Asus can receive GPS over bluetooth, and the USB tether for internet would save you a little on battery as you could kill the WiFi on both devices. My only problem was that my laptop did not have a bluetooth transceiver on it, so I was stuck doing it the bobo way. Story of my life, really
Glad it helped!
Thank you for this guide, I used some other applications though.
For my HD2 (running on Android 2.3.5) I used BlueNMEA, you can get it from the Android Market
I connected my phone with my laptop (running Win. 7), installed SDK and used ADB).
With ADB I used the commands from the BlueNMEA guide:
Code:
Using BlueNMEA over USB
-----------------------
Needs the Android SDK.
Connect your phone to a computer with the USB data cable. On the
computer, type "adb forward tcp:4352 tcp:4352". Now you can get NMEA
data by connecting to TCP 4352 on your computer.
For virtual ports I used HW VSP, quite simple to setup, I used COM9, typed 127.0.0.1 as address and the port 4352. It creates a service so this is a 1 time job.
At first I used GPSGate, but this didn't work with BlueNMEA.
GPSGate works with ShareGPS, same principle I guess.
For testing my GPS on my laptop I use OpenCPN, it shows my location perfectly.
The phone is also very stable, no problems at all.
The internet part doesn't concern me, because I have internet at my laptop .
I've been searching for a method to use my Android as a GPS mouse and I found this, thought I'd share my findings with you.
The fastest way to do this is via Bluetooth I think, but my laptop has no Bluetooth, ordered one @ Ebay for 5$, hope this saves me all the hassle.
The only thing I'm wondering, since I'm not familiar with Android SDK, is the ADB forwarding still alive after a reboot?
BTW, for people still searching for a Linux guide: http://sharedroid.jillybunch.com/user_linux.html
Thank you very much for that! Nicely informative.
AFAIK, the adb forward is gone after a phone reboot. However, I've never actually tested it. I've also not looked for a way to undo it...
cj chitwood said:
Thank you very much for that! Nicely informative.
AFAIK, the adb forward is gone after a phone reboot. However, I've never actually tested it. I've also not looked for a way to undo it...
Click to expand...
Click to collapse
I've fooled around a bit with the phone, every time I disconnect/connect I have to forward the port using ADB, ow well, I'll use Bluetooth as soon as I have my dongle.
The best part is this works, so I'm sure it will also work with Bluetooth.
I know for Windows Mobile it is possible to tether GPS through activesync,
which I used for my HD2 when it was stock Windows Mobile.
I use this when I'm at sea, I'm a sailor so it's nice to track my course.
I have Eonon GA7151W headunit - Android 6.0
Suddenly my wifi says "Connected" but 'No Internet' .... it doesn't matter whether I tether to my phone or use my home wifi, for some reason the wifi says 'No internet'.
I tried a few things and ended up resorting to a factory reset ... unfortunately it's still not working after the factory reset! Exactly the same symptoms ...
Any ideas?
hogiela said:
I have Eonon GA7151W headunit - Android 6.0
Suddenly my wifi says "Connected" but 'No Internet' .... it doesn't matter whether I tether to my phone or use my home wifi, for some reason the wifi says 'No internet'.
I tried a few things and ended up resorting to a factory reset ... unfortunately it's still not working after the factory reset! Exactly the same symptoms ...
Any ideas?
Click to expand...
Click to collapse
I have the same issue that has me stumped. any luck fixing it?
Did anyone find a solution for this? Same thing is happening to me. I don't use the internet much on my head unit but I need it. It seems this is a widespread issue.
I'm having the same problem with my radio and after Google'ing I found that you need to run this command to fix it. I don't have root on my radio yet, which is why I'm not sure if this will work.
Code:
su
settings put global captive_portal_server google.com
"Each time your Android device connects to a Wi-Fi network, the system performs a Captive Portal Check. Android aims to ensure that your device has not only received an IP address from the access point, but can actually reach targets on the Internet. This is necessary, for example, for the detection of portal pages of WLAN hotspots (e.g. in hotels). Android sends a request to the address "connectivitycheck.gstatic.com" for verification. If the request is successful or is answered with HTTP Response Code 204, the Internet is accessible. With this request, the system transmits information about the IP address of the connection, the time of Internet access and which browser is currently used to Google.If you block this request to Google via AFWall+ or anywhere else in your network, a small cross will appear on the Wi-Fi icon in the Android menu bar. Depending on the Android version, a message will also appear that no Internet is available. However, privacy-conscious users in particular do not want to send a "ping" to Google every time they go online. There is now a solution that works on rooted and non-rooted devices."
Here's a method that may work without root. Only problem is it seems to be for German devices. Also my device is Android 6.
Android Nougat (7.x)
Connects the device to your computer via USB cable and activates ADB for the process. You then place the following commands via a terminal on the computer:
adb shell 'settings put global captive_portal_http_url "http://captiveportal.kuketz.de"'
adb shell 'settings put global captive_portal_https_url "https://captiveportal.kuketz.de"'
Android Oreo (8.x) | Pie (9.x)
Connects the device to your computer via USB cable and activates ADB for the process. You then place the following commands via a terminal on the computer:
adb shell 'settings put global captive_portal_http_url "http://captiveportal.kuketz.de"'
adb shell 'settings put global captive_portal_https_url "https://captiveportal.kuketz.de"'
adb shell 'settings put global captive_portal_fallback_url "http://captiveportal.kuketz.de"'
adb shell 'settings put global captive_portal_other_fallback_urls "http://captiveportal.kuketz.de"'
You can check whether the URLs have been adjusted as desired with the following command:
adb shell 'settings get global captive_portal_https_url'
I think I've broken it down to one command that needs to be run at terminal or adb.
Code:
settings put global captive_portal_detection_enabled 0
Again, I don't have root yet on my device and spent the whole day trying to root it, but you guys can try it out for yourselves. You can use this command to see if you disabled it.
Code:
settings get global captive_portal_detection_enabled
Don't know if all of you solved this issue or swapped unit... But the same happened to me this week after a crash that made me reboot the unit.
Since then, no internet at all, besides the wifi was running like supposed to.
Also tried the factory default, a pain for nothing.
This is how I fixed the issue:
Go to date time of the unit on settings, change it to manual, get it right and adjust the time fuse to the correct one for you, then, switch off then on the wifi and should be running like a charm.
I'm my case, the internet came back in most of apps, but in google store don't, needed to reboot the unit. (I have the by eonon and the code to my radio it's 126, so I can reboot it going to eonon settings)
Rpscavaleiro said:
Don't know if all of you solved this issue or swapped unit... But the same happened to me this week after a crash that made me reboot the unit.
Since then, no internet at all, besides the wifi was running like supposed to.
Also tried the factory default, a pain for nothing.
This is how I fixed the issue:
Go to date time of the unit on settings, change it to manual, get it right and adjust the time fuse to the correct one for you, then, switch off then on the wifi and should be running like a charm.
I'm my case, the internet came back in most of apps, but in google store don't, needed to reboot the unit. (I have the by eonon and the code to my radio it's 126, so I can reboot it going to eonon settings)
Click to expand...
Click to collapse
I'm gonna try this. Would be silly that messing with the clock fixes it. I haven't been able to do anything about it since I need to root the stereo to run those commands.
I truly rocomemd you to do it!
I won't lie that first I get it running, I came to this post and when I saw you guys answer, I was already thinking in take the stereo off, but my mazda 6 it's a pain to get it off, because I have to unscrew the dash.
After some dig, found that solution for issues with access with hotspots.
I also didn't believe that the proceed would work but... the important thing is that my Eonon came back to internet life!
Let me know if also worked with you.