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.
If this is posted to the wrong place please forgive, I am working on an NDIS intermediate miniport driver on WM5/6. Our driver works on all CE platforms ( and all other windows platforms ) and installs and works on WM5 and 6 *EXCEPT* form some strange behavior around WLAN connections.
When we are installed w/ a WLAN, when the machine powers up, or soft boots, or suspend/resumes, the default SSID attempts to connect. Instead of auto-connecting, the 'tower icon' never connects, instead eventually a second 'tower icon' comes up and I get two 'tower' icons connecting. Neither ever connect.
If I manually go into 'network cards' and press 'connect', the SSID will connect and authenticate, and the network works, and the IM works and sees all traffic.
Micro$hit refuses to support anything, and HTC is no better.
If you guys are smart enough the reverse engineer the entire OS, does anyone have any idea what is going on here? Any ideas would be great.
What about an alternative comm manager that would work around this? I wrote a wzc application to try and duplicate the behavior when I manually press connect in comm manager, but it just seems to replicate the 'auto connect' behavior w/ two 'tower icons'
Does anyone know what is happening?
Does anyone have an application that can work around this?
Can anyone write an application for $$$$ to work around this?
Help me please
-Seth
How works Your application which duplicate comm manager behavior?
Did You try functions in ossvcs.dll?
I did not write my own comm manager, this is the standard comm manager, I am relying on the default WM6 one.
I wrote an app using the WZC calls based on WZCTOOL in the CE6 sdk, and when I put the key, and enc type in it will successfully connect to the access point. With my IM installed, however, this WZC app will re-produce the problem described before exactly. Somehow the default windows comm manager can still successfully connect manually... how does it do this, what calls does it use, I need to know how. Can anyone write this? The code in wzctool will not do it ( I don't think, possibly I have bone stuck in my head ).
I don't know ossvcs, please elaborate on how/what functions I might be interested in.
As an aside, does anyone want to try our shim on one of your custom kernels. I am necessarily running on a standard WM6 kernel, if someone would test and see if this problem exists on custom kernels that would be swell. I cannot modify the kernel on this one and only device I have.
Here is the good description for functions in osvcss.dll
http://www.teksoftco.com/articles/article 007/radiodevices.htm
HTH
I tried out the ossvcs sample application, and it caused the same behavior I see with the WZC stuff or when trying to 'auto connect' after a reset. That is, the access point never connects. Manually I can still connect by going into comm mgr, editing the access point, pressing cancel, then connect, and instant connection. What api call is this app using at that point?
It's verry strange behavior.
One tip from other side - did You try call SetDevicePower fo Wifi Driver and intermediate driver?
no special handling
I will look into SetDevicePoPower, but I think NDIS should be handling power events... Any further info on SetDevicePoPower or anything else would be great.
Oh yeah, in case I didn't say so before, you guys *ROCK*! Keep up the good work, and if I ever solve this problem I will be sure to 'let on'.
Does anyone out there in the wide world have an Ndis Intermeidate Miniport driver akin to PASSTHRU working for 802.11xxx on a TyTn ( WM5 or 6 )?
Yes NDIS handling power events, but by using api setdevicepower You can explicitly on/off wifi connection
Please try to write small apllication which turn wifi on and off.
CEDEVICE_POWER_STATECEDEVICE_POWER_STATE devState = D4; //Full power - constant D0 represents NO power state (OFF)
DevicePowerNotify("<WifiAdapeterName> (qualified - example {8DD679CE-8AB4-43c8-A14A-EA4963FAA715}\xxx1:", devState, POWER_NAME);
SetDevicePower("<WifiAdapeterName> (qualified - example {8DD679CE-8AB4-43c8-A14A-EA4963FAA715}\xxx1:", POWER_NAME, devState);
But Maybe You have still problem if wifi driver is not loaded until comm mgr button is pressed...
.
WiFiFoFum
I just tried the WiFiFoFum application that allows one to power on and off the devices. Is this using the same API? WiFiFoFum did not work, I tried powering on and off my device and the real device in different orders, and it does not work.
I will try you API now...
not smart enough
I don't know enough to understand your example. Where do I get the correct GUIDs from? I assume the xxx1, is the device name instantiation.
What about 'devName' and POWER_NAME. Sorry, bone still stuck in head, ughh.
Guid is typically found on this place
\\\registry\HKLM\System\CurrentControlSet\Control\Power\State\Suspend\
Value is
{98C5250D-C29A-4985-AE5F-AFE5367E5006}\
Device name can be found on registry key HKLM/COMM.
Also device name is displayed in wififoforum.
POWER_NAME is constant - see MSDN.
Hi,
I've recently become an owner of HTC Touch Diamond and I've been able to set up everything except wi-fi. I've tried to look everywhere in settings, I've searched for a solution on the internet but even though it seems I'm not the only person with this problem, nobody was able to give a certain solution.
The problem seems to be in secured Wi-Fi networks because when I try to connect to open network, it works fine, but whenever I try to connect to one of my home routers (WPA-PSK, TKIP) or at school (WPA, TKIP, 802.1X) it just says connecting... connecting... and then it goes not available and I can try it again but it never succeeds. I've tried all different kinds of options, nothing changed. One strange thing is the fact that the first time I turned on my HTC, it worked, but that was just for once.
I'm using the last official ROM and I haven't made too many changes in configuration, I just used tweakers such as Diamond Tweak, Diamond TF3D Config and Advanced Config to adjust some behavior.
Please, can anyone help me out? Thanks.
i think it posibli an certificate error from your acces point, for example in spain at university we use eduroam, it is wpa2, with ttls, that is not suported by ms mobile, but we can install and use secure2w.
in house i use wpa and i not have any problem conecting to mi ap, check if this is the problem, alse try another rom with a new xip and newer os
We also have eduroam at school and actually I was able to install the certificate so that shouldn't be the problem, anyways I'll try to use the secure2w program you're talking about. It might help...
But still, it doesn't explain why I can't connect to my home router which is definitely supported security (WPA-PSK, TKIP) and why I was able to connect to it once and from then I haven't been to. As I said in my first post, I think I'm not the only person because I found a few people with similar problems on the internet but nobody was able to solve or at least detect the cause of the problem.
I just remembered that I should point out that there shouldn't be any problem with my router configuration (such as MAC filtering and so on), also it's not the only one my HTC doesn't want to connect to, generally it's any secured router.
My problem is solved. I don't really know the basic reason but it was caused by Advanced Configuration Tool where I set some options (Networking - WPA and something else) to default values (as it said) but that was wrong. You need to set it to the other value and then it works.
platinix iu seem to have exactly the same problem you have dscribed ive messed around with network settings on adavnced config but to no prevail could you please tell you network settings it would be a great help
thanks
Hi,
I am sorry but I do not remember it exactly. I looked there and I think it was the option WPA authentication, I have it on disabled now. Try it. It really pain in the ass!
MAC
Haai there
Make sure your router permits your MAC address.
ditto: WPA Authentication was the prob
Thanks for the thread, it helped me find the problem I introduced with my 3-day-old Verizon HTC Touch Pro.
I'd installed .NET CF 3.5 (via a .cab file, not the ActiveSync) and the Advanced Configuration Tool and one of the tweaks I did was enable "WPA authentication". Sure seemed like a good idea. Turned out that's what kept my device from connecting to my home WPA/TKIP wifi network.
Disabling "WPA authentication" in the Advanced Configuration Tool cleared things up immediately. ... Well, immediately after the reboot anyway.
iloveyou44 said:
Thanks for the thread, it helped me find the problem I introduced with my 3-day-old Verizon HTC Touch Pro.
I'd installed .NET CF 3.5 (via a .cab file, not the ActiveSync) and the Advanced Configuration Tool and one of the tweaks I did was enable "WPA authentication". Sure seemed like a good idea. Turned out that's what kept my device from connecting to my home WPA/TKIP wifi network.
Disabling "WPA authentication" in the Advanced Configuration Tool cleared things up immediately. ... Well, immediately after the reboot anyway.
Click to expand...
Click to collapse
I reported on this issue in the Schaps Advanced Configuration Tool thread. The wording & logic are the wrong way around - what you think is enabling WPA is actually disabling it. I edited the .XML file and corrected this so mine looks OK now, however I don't think the original has ever been updated.
Its hard work searching on here but I did manage to find it:
http://forum.xda-developers.com/showthread.php?p=2840229&highlight=Disable#post2840229
Since there are other WPA2 settings that can be customised (http://msdn.microsoft.com/en-us/library/aa916274.aspx) I updated the XML file I have so these settings are available.
HTH
Andy