How can I detect if the device has flight mode turned on?
On phone devices it means radio is off.
On wifi devices it would mean wifi is turned off.
Thanks in advance,
Flightmode on means NO Radio.
Ie.: NO GSM, NO Bluetooth, NO WiFi.
On Himalaya there is a cross in that title-bar where normally the GSM signal strenth is shown. Also taping the GSM signal strength indicator shows whether or not youre in flight mode.
Take a look at the lineSetEquipmentState & lineGetEquipmentState in the SDK.
lineGetEquipmentState fails with LINEERR_OPERATIONFAILED
My application need to know if device has flight mode turned on (radio is shut down). The ExTAPI API, lineGetEquipmentState, works well for other PocketPc phone devices but fails frequently on XDAs and M1000.
lineGetEquipmentState frequently fails with 80000048 (LINEERR_OPERATIONFAILED)
Pseudo code looks like
1, initialize with lineInitializeEx
2. negotiate version with lineNegotiateAPIVersion for each line device
3. look for phone device by calling lineGetDevCaps and then checking media mode for the line device is LINEMEDIAMODE_INTERACTIVEVOICE
4. negotiate extension version with lineNegotiateExtVersion
5. open line with lineOpen
6. get radio state with lineGetEquipmentState
7. close line with lineClose
8. shut it down with lineShutdown
Step 6 frequently fails with 8000048 (LINEERR_OPERATIONFAILED)
Any idea, clue why it fails.
Your response is highly appreciated
Flight mode on Wifi devices
For non phone devices having wifi,
I tried looking for wifi line device by calling lineGetDevCaps and then checking media mode for LINEMEDIAMODE_DATAMODEM
Here all the line devices have this media mode.
Now when I call lineGetEquipmentState, it fails with LINEERR_OPERATIONUNAVAIL
I am still not sure how to detect flight mode is turned on on the wifi devices.
i´m using lineSetEquipmentState & lineGetEquipmentState on T-Mobil´s MDA 1, MDA 2 and MDA 3. Everything is working fine(On more then 40.000 Clients).
When you want to check FlightMode on MDA 3 for you WIFI Card you should use NDIS.
What do you mean by us NDIS?
I get the same errors on MDA III devices.
Yes, because you are using TAPI.
TAPI means Telephony Application Programming Interface and is not interessting when you would like to check WIFI.
NDIS means Network Driver Interface Specification and that is what you need.
Take a look at MSDN or the SDK.
Thanks
I have zero knowledge about NDIS, can you please give me starting pointers - relevant APIs.
Depands on what you would like to do.
Take a look at the NDIS faq.
http://www.ndis.com/faq/default.htm
I just want to check if the flight mode is turned on.
Has anybody found a way to toggle wifi off/on with one click, instead of going through comm manager? Vijay' volubilis responds that "no compatible wifi found" when executed on my prophet.
Anyone? Or Vijay himself maybe shedding some light on this issue?
VJVolubilis's wifi feature has only been tested on the Universal, because that's the hardware I have. The Wizard wifi control is not perfect, because I don't have one.
I'm slowly thinking about how to try to implement a more generic wifi control, but unfortunately this is not really an OS feature, it's OEM specific, so it's something I'm still investigating. I haven't thought about the Prophet before. Let me check it out...
V
If you need any info (registry or what-not), let me know.
Thanks for looking into this.
vjvolubilis can be used for turning on/off wifi on prophet..
but there is one additional step to make it work..
ie after every soft reset, u need to use comm manager to turn on/off wifi 1 time. after which , u can use vjvolubilis to control it..
this issue is the same when u are using phone alarm with skins that can allow one touch wifi on/off... ie comm manager must activate it for at least once before it will respond to oneclick controls from either vjvolubilis or phonealarm..
I own a dopod818 [ singapore's version of prophet ]
Hey, I didn't know it (kind of) works on the Prophet... so it uses the same architecture as the Wizard I guess.
I'll try to think about Wifi control a little more as soon as I get a bit of time.
V
Not quite. Yes, true, I realized now that once Comm manager is employed once, Vijay's app CAN turn wifi on. But it does not turn it off, if you press wifi toggle again...
At least on my Qtek S200 with latest Dopod rom.
solved
Found a solution for this issue
Just put a shortcut to \Windows\WiFiInit.exe into your startup folder and enjoy the quickly activating wi-fi! After a soft reset this vill activate wlan for a second (green led will flash once and a wi-fi icon will appear on a place of network icon — don't worry).
But, as krale said, there is another little bug with VjVolubilis: you have to create both -wifion and -wifioff shortcuts to control wifi on Prophet because -wifitoggle shortcut does not turn off the wi-fi, it just can activate it.
When launched with -status parameter, it says that Wisard wi-fi is activated.
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.