Ad-Hoc Networking

To enable:

iwconfig eth0 mode ad-hoc essid pre

This of course disconnects your existing wi-fi connection, so make sure you're connected via EVDO or USB.

This is just the standard linux method for enabling ad-hoc functionality. However, if you've got WiFi turned on via the Pre interface, it's not going to work for long, since the WiFi manager forces the device back into Managed mode periodically. In order to avoid this, you need to turn off the WiFi functionality through the webOS GUI. Then, bring the WiFi card up using:

/usr/sbin/wifidriver -i

This will load the driver for the WiFi card, but will not send any notifications to webOS, so it won't try to force the setting back to those it likes. At this point, the standard command above will work, and you can create an ad-hoc network. Useful for ssh-ing into your Pre when there are no access points available.

GUI enabled application to switch the mode coming soon..

Testing notes: Enabling wi-fi like this seems to turn it on full blast. The Pre battery will heat up quite a bit and if you're close to the device you may not get a decent signal due to overpowering principles of antenna theory.. Consider adding settings to limit wifi power output to 10-20% to help preserve battery life and minimize heat output. The nature of ad-hoc will guarantee some level of proximity, and therefore not need maximum power output. ~ Robi

root@castle:~# iwpriv eth0 eth0     Available private ioctls : extscan         (8BFA) : set   0 int   & get   2 char cachescanssid   (8BF0) : set   0 int   & get   2 char hostcmd         (8BE4) : set 2047 byte  & get 2047 byte arpfilter       (8BE6) : set 2047 byte  & get 2047 byte regrdwr         (8BE3) : set 256 char  & get 256 char sdcmd52rw       (8BFE) : set   7 byte  & get   7 byte sdcmd53rw       (8BFF) : set  32 char  & get  32 char setgetconf      (8BEA) : set 2000 byte  & get 2000 byte getcis          (8BE1) : set   0       & get 512 byte scantype        (8BEB) : set   8 char  & get   8 char getNF           (0001) : set   1 int   & get   1 int getRSSI         (0002) : set   1 int   & get   1 int bgscan          (0004) : set   1 int   & get   1 int enable11d       (0005) : set   1 int   & get   1 int adhocgrate      (0006) : set   1 int   & get   1 int sdioclock       (0007) : set   1 int   & get   1 int wmm             (0008) : set   1 int   & get   1 int uapsdnullgen    (000A) : set   1 int   & get   1 int setcoalescing   (000B) : set   1 int   & get   1 int adhocgprot      (000C) : set   1 int   & get   1 int enableroaming   (000D) : set   1 int   & get   1 int enablepwrmgmt   (000E) : set   1 int   & get   1 int chipenable      (000F) : set   1 int   & get   1 int wmm_qosinfo     (0002) : set   1 int   & get   1 int lolisteninter   (0003) : set   1 int   & get   1 int fwwakeupmethod  (0004) : set   1 int   & get   1 int psnullinterval  (0005) : set   1 int   & get   1 int bcnmisto        (0006) : set   1 int   & get   1 int adhocawakepd    (0007) : set   1 int   & get   1 int ldocfg          (0008) : set   1 int   & get   1 int sdiomode        (0009) : set   1 int   & get   1 int rtsctsctrl      (000E) : set   1 int   & get   1 int autodeepsleep   (000C) : set   1 int   & get   1 int wakeupmt        (000D) : set   1 int   & get   1 int setrxant        (0001) : set   1 int   & get   0 settxant        (0002) : set   1 int   & get   0 authalgs        (0004) : set   1 int   & get   0 encryptionmode  (0005) : set   1 int   & get   0 setregioncode   (0006) : set   1 int   & get   0 setlisteninter  (0007) : set   1 int   & get   0 setmultipledtim (0008) : set   1 int   & get   0 setbcnavg       (0009) : set   1 int   & get   0 setdataavg      (000A) : set   1 int   & get   0 associate       (000B) : set   1 int   & get   0 getregioncode   (0001) : set   0       & get   1 int getlisteninter  (0002) : set   0       & get   1 int getmultipledtim (0003) : set   0       & get   1 int gettxrate       (0004) : set   0       & get   1 int getbcnavg       (0005) : set   0       & get   1 int getdataavg      (0006) : set   0       & get   1 int getdtim         (0007) : set   0       & get   1 int getrxant        (0001) : set   0       & get  12 char gettxant        (0002) : set   0       & get  12 char gettsf          (0003) : set   0       & get  12 char wpssession      (0004) : set   0       & get  12 char deepsleep       (8BFB) : set   1 char  & get   6 char hostsleepcfg    (8BE5) : set  31 char  & get   0 deauth          (0001) : set   0       & get   0 adhocstop       (0005) : set   0       & get   0 radioon         (0002) : set   0       & get   0 radiooff        (0003) : set   0       & get   0 rmaeskey        (0004) : set   0       & get   0 wlanidle-on     (000A) : set   0       & get   0 wlanidle-off    (000B) : set   0       & get   0 sleepparams     (0002) : set  64 char  & get  64 char bca-ts          (0003) : set  64 char  & get  64 char scanmode        (0006) : set  64 char  & get  64 char getadhocstatus  (0009) : set  64 char  & get  64 char setgenie        (000A) : set  64 char  & get  64 char getgenie        (000B) : set  64 char  & get  64 char qstatus         (000D) : set  64 char  & get  64 char setaeskey       (0001) : set  32 char  & get   0 getaeskey       (0001) : set   1 int   & get 128 char version         (0002) : set   1 int   & get 128 char verext          (0003) : set   1 int   & get 128 char setwpaie        (8BE0) : set  24 char  & get   0 getlog          (8BE9) : set   0       & get 512 char tpccfg          (0001) : set  16 int   & get  16 int scanprobes      (0006) : set  16 int   & get  16 int ledgpio         (0005) : set  16 int   & get  16 int sleeppd         (0007) : set  16 int   & get  16 int rateadapt       (0008) : set  16 int   & get  16 int inactivityto    (0009) : set  16 int   & get  16 int getSNR          (000A) : set  16 int   & get  16 int getrate         (000B) : set  16 int   & get  16 int getrxinfo       (000C) : set  16 int   & get  16 int atimwindow      (000D) : set  16 int   & get  16 int bcninterval     (000E) : set  16 int   & get  16 int sdiopullctrl    (000F) : set  16 int   & get  16 int scantime        (0010) : set  16 int   & get  16 int dataevtcfg      (0012) : set  16 int   & get  16 int txcontrol       (0013) : set  16 int   & get  16 int hscfg           (0015) : set  16 int   & get  16 int hssetpara       (0016) : set  16 int   & get  16 int drvdbg          (0019) : set  16 int   & get  16 int setuserscan     (0001) : set 2000 byte  & get 2000 byte getscantable    (0002) : set 2000 byte  & get 2000 byte setmrvltlv      (0003) : set 2000 byte  & get 2000 byte getassocrsp     (0004) : set 2000 byte  & get 2000 byte addts           (0005) : set 2000 byte  & get 2000 byte delts           (0006) : set 2000 byte  & get 2000 byte qconfig         (0007) : set 2000 byte  & get 2000 byte qstats          (0008) : set 2000 byte  & get 2000 byte txpktstats      (000C) : set 2000 byte  & get 2000 byte getcfptable     (0009) : set 2000 byte  & get 2000 byte

root@castle:~# iwlist Usage: iwlist [interface] scanning [essid NNN] [last] [interface] frequency [interface] channel [interface] bitrate [interface] rate [interface] encryption [interface] keys [interface] power [interface] txpower [interface] retry [interface] ap             [interface] accesspoints [interface] peers [interface] event [interface] auth [interface] wpakeys [interface] genie [interface] modulation

root@castle:~# iwlist eth0 txpower eth0     2 available transmit-powers : 0 dBm        (1 mW) 16 dBm       (39 mW) Current Tx-Power=10 dBm      (10 mW)

root@castle:~# iwconfig eth0 eth0     MRVL-SD8686  ESSID:"default"  Nickname:"" Mode:Managed Frequency:2.462 GHz  Access Point: 00:17:31:ED:CE:B1 Bit Rate:54 Mb/s  Tx-Power=10 dBm Retry limit:9  RTS thr=2347 B   Fragment thr=2346 B          Encryption key:****-****-**   Security mode:open Power Management:off Link Quality:0/100 Signal level:-54 dBm  Noise level:-93 dBm Rx invalid nwid:0 Rx invalid crypt:0  Rx invalid frag:5969 Tx excessive retries:1824 Invalid misc:4005   Missed beacon:0

Finally, something promising I just stumbled on:

root@castle:~# wifi-mfg-labtool Cannot Find File setup.ini Cannot Find File setup.ini Name:          DutApiClass Version:       1.3.5.00 Date:          Wed Jul 15 21:09:03 2009

Note: Static Object

Cannot Find File setup.ini DutIf_InitConnection: 0

8686 (802.11a/g/b) TEST MENU -- 11. Get RF Channel (5GHz Channels:        36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165, 183, 184       , 185, 187, 188, 189, 192, 196, 7, 8, 11, 12, 16, 34, 38, 42        , 46, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140) 12. Set RF Channel (decimal) 13. Get RF DataRate (rate) (1 for 1M;  2 for  2M;  3 for 5.5M; 4 for 11M,  5 for 22M,         6 for  6M;  7 for  9M;  8 for 12M;  9 for 18M, 10 for 24M,        11 for 36M, 12 for 48M, 13 for 54M, 14 for 72M) 17. Set Continous Tx Mode (enable datarate (pattern=0)) 18. Set CW Tx Mode (enable) 19. Set Carrier Suppression Tx Mode(enable) 22. Set Power at Antenna Using Cal data (decimal decimal [modulation=0]) (ch pow [b =0, g=1]) 25. Set DutyCycle Tx Mode (enable dataRate ((payloadweight =50)(pattern=0)(shortPreamble=0)) 27. Xosc Calibration (TU =10) 28. PSM cycling (NumOfCycle=1 (decimal) SleepDur=1000000(us)(decimal) rxDur=1000000(us)(decimal) StableDelay=2000(us)(decimal)) 29. Get RF Band (0 for 2.4G, 1 for 5G) 30. Set RF Band (band (0 for 2.4G, 1 for 5G)) 31. Clear received packet Count (Start Rx FER test) 32. Get received packet Count (Stop Rx FER test) 33. Tx MultiCast Packet (0x)(len=400) (0x)(Count=64) (rate=4)        (pattern=0xAA) (shortPreamble=1) (bssid-xx.xx.xx.xx.xx.xx) 34. Enable BSSID filter (enable bssid-xx.xx.xx.xx.xx.xx ssid-string) 39. SPI download from sbin file. 40. SPI Verify from sbin file 41. Dump E2PROM content 45. Read MACAddress (0|1 from Mac Reg or not) 46. Write MACAddress (xx.xx.xx.xx.xx.xx 0|1 (from Mac Reg or not)) 53. Write CalTable (from file:CalDataFile.txt) 54. Read CalTable from EEPROM 88. FW Version 89. Load Dut configuration file (FileName) 95. Get Rf XTAL control 96. Set Rf XTAL control (setting(8 bits)) 117. Tx IQ Cal Mode(enable(1|0))) 121. Thermal Compensation(enable(0|1), [TempRef, SlopNum, SlopDenom, CalInMs, PPACoeff, PACoeff]) 99. Exit 125. Write PM Reg (0x 0x)(addr data) 126. Read PM Reg (0x 0x)(addr data) Enter option:

It seems we have some things to play with. Notice 121. Thermal Compensation. ~Robi