No announcement yet.

OT-but applicable-Bluetooth serial terminal for Archos 70 Internet Tablet (Android)

  • Filter
  • Time
  • Show
Clear All
new posts

  • OT-but applicable-Bluetooth serial terminal for Archos 70 Internet Tablet (Android)

    I have a PIC16F1825 as part of my TigTac Transistor Ignition and Tachometer project, and it now sends the dwell, RPM, and running time data out on a Bluetooth serial connection which I can read on my PC, using a simple terminal emulator. Older PCs have Hyperterm, but for Win8, at least, it no longer works, and I am using TeraTerm Pro. But all I need to do is receive text at 9600N81 or possibly 57600N81. Either setting works for this Bluetooth adapter (HC-05) but I had previously changed the default baud rate to 57600 and the PIC code needs to use this. So I'm OK as far as using my laptop PC for communication.

    However, I'd like to be able to use a smaller, more portable device, such as my Archos 70 Internet Tablet which I bought a few years ago. I have a "terminal emulator" app but I can't see where to adjust serial settings and actually it seems to be more like a terminal TELNET connection to the OS. So I went to the "App Store" but could not find anything useful. On-line I found several apps that seem like they should work:

    I logged into the appbrain site using my tablet and got a royal run-around trying to download and install any of these apps. It seems that Google has something called Google Play that might run the app through them rather than just installing it like a normal app as God intended before He was googlized. So I was able to click on "INSTALL" in the following, but after some waiting I found a tiny icon that said "You don't have any devices":

    I think something similar may have happened when trying to install and run other apps, and I saw no way to actually install anything on my tablet rather than running through the Google "interface". There must be some way to get and install a simple serial interface application on this device. But I'm stumped and frustrated and tired, and I had hoped to get this ready for CF tomorrow, along with a few other things, and no joy.

    Maybe I just need to get a Windows tablet that hopefully works like a normal computer and not a glorified GameBoy. I do enjoy some of the games like finger pool and finger bowling and it does have a browser and a few other useful apps, and maybe it will be useful for me while I'm recuperating with a neck brace.

    I also have a new LG306G Tracfone to replace my old phone whose battery died, and it has Bluetooth, but apparently only for certain devices. Probably not smart enough to have a terminal emulator, although to an engineer that is the least it could have!

    [edit] I found an app that is supposed to help with installing apps on the Archos:

    So I found it in the AppLib and it costs 2.5 Euros, so I tried to purchase it. I first had to log in to my Archos account, but it said it was not linked to a PayPal account. So I hit "OK" and it just closed. I tried the "Register On-line" app and it only gave me the information that it was already registered. Stupid tablet! What can you expect from an OS that goes by names like "Ice Cream Sandwich".
    Last edited by PStechPaul; 04-11-2015, 12:12 AM. Reason: More disappointment
    Paul , P S Technology, Inc. and MrTibbs
    USA Maryland 21030

  • #2
    I'm not familiar with that tablet but I assume it runs Android? There should be a linux terminal emulator already installed or easily available. Then you just run screen <port_name> <baud_rate> to open up a simple serial connection. You can also find a wealth of information online regarding writing your own aps. You could design yourself a fancy GUI to interface with your PIC. We use Galaxy phones at work running an app we wrote to interface with our radiation detectors and provide a nice GUI.

    By the way, I like RealTerm more than TeraTerm. It has more options that are really helpful for debugging. Most of what I do is in hex, so a normal terminal is pretty much useless. Realterm has many options for displaying hex, binary, etc. And it's free

    Terminal program specially designed for capturing, controlling and debugging binary and other difficult data streams.
    Last edited by Fasttrack; 04-11-2015, 12:11 AM.


    • #3
      There is a "Terminal Emulator" which comes up with a "$" command prompt, but if I enter anything like "dir" or "run" or "man" it replies "dir not found". I found and installed a "Linux Commands" app from the store but when I try to run it, it says "stopped unexpectedly - force close". I'm pretty discouraged with the thing. Maybe I'll ask at the store where I bought it -

      MicroCenter has a 7" WinBook for $70. It has Win8.1 which I hate but mostly because it won't run some programs on my laptop, but for a tablet maybe it's OK.
      Get it now! Lenovo Tab M8 is the 2nd generation mainstream tablet that comes with standout metal design, and is tailored to make your entertainment experience richer. The stunning 8" HD display brings you a crispier and brighter visual world.
      Paul , P S Technology, Inc. and MrTibbs
      USA Maryland 21030


      • #4
        That Archos is android but it isnt full google android as you have found out. Yes, you have to buy the play store app and load it sideways from their appstore then it installs normal google play with youtube gmail and all the other G stuff along with the google play store, because Archos didnt license google android from google, but hey thats why they were so cheap. How you sort the lack of payment stuff out on your appbrain account Im not sure, I was in the same position a few years ago when I had to redo one of mine but I remember having to jump through the hoop and got it sorted solely for the purpose of buying that one playstore app. I had one tabet that loaded a boot menu with a choice of 3 operating systems (debian linux, google android, or openaos) but its much delving round reflashing the boot sector in the tablet nand and the hardware is pretty crap to justify all the effort. The usb port doesnt physically support certain classes of device in host mode, so no yuris dro, or other stuff that relies on usb host. Mine was a Archos 101iT series 8, the bigger at the time of sale internet tablet. Ive been led to believe the series9 onwards are much better hardware but I have stayed away from the brand since.
        I still have the old series8, but now just google android on it and use it to control the tv and browse forums/web on in bed :-)
        Oh if you let them get too cold, they turn off with a flat battery error and wont charge until you have left them somewhere warm for a few days on charge, and done some key sequence to get the bootloader into emergency charging mode because the tablet just sits there refusing to start its charging mode because the battery is so flat. Even when you do the sequence, you have to leave it a day or so before it will turn back on afterwards. Its now well documented if you google for it but I thought I had bricked mine the first time it happened.
        I used to use mine as the shop media player until I discovered this, now a $25 cheap chinese budget tablet does the job 100x better. Something to know about if your going to leave it lying round in the shop though.

        As for the other problem. You can use adb (android debugger) on your main pc and get a command shell right on the tablet using the usb cable. you can get to the underlying os without all that gui nonsense and use the linux toolchain then. Once you have a shell to it, screen as above works as a tty emulator, but you would need to know what the device comes up as, usually rfcomm0, but its all a bit digging round inside linux if you have good shell skills already its easier but if you just need to click and sort it out, probably blueterm is a better tool. :-

        I had a few brushes with those rs232->bluetooth adaptors using them as wireless serial cables to reprogram the ecu maps on my bike without having to lift the seat or plug in, and there always seemed to be something annoying about the adapter itself. Either they were unstable after a period of time, or if you left them turned off they forgot all their firmware settings, or went deaf during heavy data traffic, but hopefully they have got better now!
        Last edited by MrFluffy; 04-11-2015, 06:59 AM. Reason: Added the tablet model I had in case it matters


        • #5
          Lots of good information to digest. Thanks. It may not be much worth the bother of going though all those spinning hoops just so I can install an app so I can buy an app that lets me install apps. That's just crazy! I think I paid something like $200 for it, but now I've seen Android tablets as cheap as $40 new. It has the "Jelly Bean" OS. I was wondering if these goofy sweet snack names actually correspond to sequential letters of the alphabet? I remember (I)ce cream sandwich, and now (J)elly bean, and I saw some with a (K)it Kat OS. So did they start with (A)pple Pie and ending with (Z)agnut bar?

          The cheapest Chinese Windows 8.1 tablet I found so far is $92 including shipping:

          Their cheapest Android is $44:
          Only US$43.99, buy best AOSD Q88D-G Equipped with A23 Dual Core CPU and the Mali-400 OPEN GL GPU ,they will make the tablet smooth while you are using the tablet.Its 7 inch 5-points capacitive touch screen with 1024*600 resolution,not too small or too big,good to watching movies or playing games. sale online store at wholesale price.

          Their prices on Bluetooth modules are pretty good:
          Buy the best and latest bluetooth serial on offer the quality bluetooth serial on sale with worldwide free shipping. | Shopping

          Maybe I'll try connecting the Archos via a USB cable and see if I can transfer files. I also have a file transfer app on the device that I used previously. I don't remember how it worked, maybe through a local WiFi network. I was able to demo the TigTac on my PC at the show, but they didn't have electric at our table, and the battery went seriously low after a couple hours, even though it went to sleep. I plan to visit MicroMart tomorrow and maybe purchase the WinBook, and also maybe a book on the Android OS and programming.

          Paul , P S Technology, Inc. and MrTibbs
          USA Maryland 21030


          • #6
            Yes, Archos just balked at paying google to license the extra value add google play stack, and if they put out the apk themselves, then google would have sued them for copyright infringement. Only the base aosp is free, if you want the google added special sauce you have to implement standard features and restrictions around what codecs and access is permitted. The archos as shipped is just vanilla AOSP.

            They started at alpha, went to beta, then went cupcake, donut, eclair, froyo, gingerbread,honeycombe, icecream sandwich, Jellybean is 4.1, KitKat 4.4–4.4.4 and now lollipop is v5 onwards. If you buy a cheap tablet dont be shocked to power it on and find cyanogen mod reskinned to look like a google android install either. Some of the cheap vendors are recycling obsolete hardware by putting cyanogen on it which runs a little faster without all the google bloat, just enough to be acceptable. The difference is they come configured with google play and lie to the play store about their version so they mostly work.

            Again, tread carefully in the bargin basement area of pricing. The chinese tab I bought as a media player didnt have usb host mode enabled also. It requires a few extra components electrically so you dont tend to see it on things until you start paying a little more.

            One thing you can do still as above is install ADB (android debugger) on your main pc, then connect with a usb cable, and you can get a actual shell on the device from adb. Nowadays I use airdroid to get things off and on my tablets/phones because I can do it over wifi, but before that I used adb fairly often. You can copy off & side load .apk (android packages) from the shell with both methods.

            If it doesnt come across well, despite using it a lot, Im not overly taken with android as a real tinkerers os. Its just googles way to shove content down consumers throats cheaply really. Which is a real shame as its popularity has killed the viable open source compettition (GPE and OPie on linux install for phones and pdas) which many moons ago now I ran my then new ipaq 3870 on, and was leaving it in the back of racks at datacentres running nmap and other standard linux tools doing network scanning for security audit work


            • #7
              I just purchased an "open box" Winbook 7" tablet for less than $50. The tech guy at Micro Mart was impressed with my Bluetooth device and what I was doing was "above his pay grade". Same thing at the store where I had purchased the Archos tablet. I think I'll just use it like a Gameboy and maybe also add some HTML/JavaScript apps for machining, and not worry about it being in a shop environment.

              There may be a way to do it:

              That may be more information than necessary, but it might help someone trying to do something similar. I may need to learn how to program for the Android OS, and I might need to upgrade what I have - I think it is "FroYo".

              [edit] I am very persistent, and I found some information about how to access Android apps on the Archos. I still could not get the AppLib to allow access to the ArcLib app, even after resetting the device and rebooting and updating it. But then I found something called Aptoide, which is an alternative App store. I installed it on my device, and then I was able to find several serial terminal apps. Many of them would not install, but finally I found one that worked, called simply "Bluetooth Terminal". I had to play around a bit and also disconnect the TeraTerm that was running on my PC, and now I'm getting the data sent from the TigTac.

              I'd like to learn how to program for the Android OS - my previous attempts were unsuccessful.
              Last edited by PStechPaul; 04-14-2015, 04:21 AM.
              Paul , P S Technology, Inc. and MrTibbs
              USA Maryland 21030


              • #8
                I just ordered an Android from because of this thread. I have a Bluetooth module for my Arduino. We'll soon see if I screwed up!
                Paul, if you discover any good tutorials for Dummies like me, for writing Android Apps, please share.

                Last edited by chucketn; 04-14-2015, 08:48 AM.


                • #9
                  If you can access the Google Play app store, you may find plenty of good software. Aptoide and some other stores list some of them, but I found they either would not install or I got a parsing error. Evil Google may be pulling some strings and making that happen. But here is a review of some of the apps:

                  **UPDATED POST** We're adding more apps at the bottom! Seems like every pocket these days has a smart phone in it.  Machinists are no exception.  Here's

                  More info:

                  I just got a new smartphone :D . I was wondering if there's any useful machinist apps out there.Thanks :typing:

                  Good luck with your new Android device.

                  BTW, another way to make an app for the Android or Winbook or even an iPod/iPad/iPhone (or anything with a browser) is to use HTML and JavaScript. Here is a web page I designed for electric vehicles, but it has some features that could be useful for machining, such as conversions for RPM, torque, and power for motors, and energy and power required for moving a mass up an incline. It would be easy enough to design a similar page with speeds, feeds, DOC, tap drills, fastener specs, sine bar calculations, bolt circles, and other commonly needed info. It should be possible to store the web page locally or on a thumb drive and run it without having to connect to the internet.

                  BTW, here is some of the source code for that page:

                  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                  <style type="text/css">
                  color: blue; background-color: AliceBlue; width:100
                  body {
                  background-color: Beige;
                  <TITLE>EV Calculator</TITLE>
                  <script type="text/javascript"> 
                  </HEAD >
                  <BODY LINK="#0000ff" VLINK="#800080" onLoad = "EV_Initialize()" >
                  <FORM NAME="Form1" action="">
                  <H2>EV Calculator</H2>
                  <h3>P S Technology, Inc.</h3>
                  Version: <INPUT class="ro" NAME="FormDate" SIZE=15 value="" READONLY>
                  Precision: <INPUT NAME="precision" SIZE=2 value="3" onChange="Compute()">
                  <tr><td>Mass: </td> <td><input type="text" name="tMass" size=12 onChange="Compute()"> kg </td>
                    <td><input class="ro" type="text" name="tMasslb" READONLY > lb </td></tr>
                  <tr><td>Gravity constant: </td> <td><input type="text" name="tGrav" size=12 onChange="Compute()"> m/sec/sec </td></tr>
                  <tr><td>Coefficient of Rolling Resistance: </td> <td><input type="text" name="tRoll" size=12 onChange="Compute()"></td></tr>
                  <tr><td>Density of Air: </td> <td><input type="text" name="tAir" size=12 onChange="Compute()"> kg/m^3 </td></tr>
                  <tr><td>Coefficient of Drag: </td> <td><input type="text" name="tDrag" size=12 onChange="Compute()"></td></tr>
                  <tr><td>Frontal Area: </td> <td><input type="text" name="tArea" size=12 onChange="Compute()"> m^2 </td></tr>
                  <tr><td>Velocity: </td> <td><input type="text" name="tSpeed" size=12 onChange="Compute()"> km/hr </td>
                    <td><input class="ro" type="text" name="tSpeedMPH" READONLY > MPH </td></tr>
                  <tr><td>Acceleration: </td> <td><input type="text" name="tAccel" size=12 onChange="Compute()"> m/sec/sec </td>
                    <td><input class="ro" type="text" name="tAccelMPH" READONLY > MPH/sec </td></tr> 
                  <tr><td>Angle: </td><td><input class="ro" type="text" name="tAngle" size=12 READONLY > Degrees </td>
                    <td><input class="ro" type="text" name="tSlope" READONLY > Percent Slope </td></tr>
                  <TR><TD>Inertia (kinetic energy): </TD><TD><INPUT class="ro" TYPE="text" NAME="tInertia" READONLY VALUE=0 > J (kg-m^2/sec^2) </TD>
                    <TD><INPUT class="ro" TYPE="text" NAME="tWh" READONLY VALUE=0 > Wh </TD></TR>
                  <TR><TD>Force (thrust): </TD><TD><INPUT class="ro" TYPE="text" NAME="tForce" READONLY VALUE=0 > N (kg-m/sec^2) </TD>
                    <TD><INPUT class="ro" TYPE="text" NAME="tForceLb" READONLY VALUE=0 > lbf</TD></TR>
                  <TR><TD>Power: </TD><TD><INPUT class="ro" TYPE="text" NAME="tPower" READONLY VALUE=0 > W (kg-m^2/sec^3) </TD>
                    <TD><INPUT class="ro" TYPE="text" NAME="tPowerHP" READONLY VALUE=0 > HP</TD></TR>
                  <TR><TD>Watt-Hours per Unit Distance: </TD><TD><INPUT class="ro" TYPE="text" NAME="tWHKM" READONLY VALUE=0"> Wh/km </TD>
                    <TD><INPUT TYPE="text" class="ro" NAME="tWHmile" READONLY VALUE=0 > Wh/mile </TD></TR>
                  <tr><td>Wheel Diameter: </td><td><input type="text" name="tWheelDia" value="600" size=12 onChange="Compute()"> millimeters </td>
                    <td><input type="text" class="ro" name="tWheelDiaInches" READONLY > inches </td></tr>
                  <tr><td>Wheel RPM: </td> <td><input class="ro" type="text" name="tWheelRPM" value="" READONLY> RPM </td></tr>
                  <tr><td>Wheel Torque: </td><td><input type="text" class="ro" name="tWheelTorque" value="" READONLY> Newton-Meters </td>
                    <td><input type="text" class="ro" name="tWheelTorqueLbFt" READONLY > Pound-Feet </td></tr>
                  <input type="button" name="btCompute" onClick="Compute()" value="COMPUTE">
                  <input type="button" name="btInitialize" onClick="EV_Initialize()" value="INITIALIZE">
                  <h2>Torque, Power, and RPM</h2>
                  <tr><td>Torque: </td> <td><input type="text" name="tTorque" size=12 onChange="ComputePower()"> lb-ft </td>
                    <td><input type="text" class="ro" name="tTorqueNM" READONLY > Newton-Meters </td></tr>
                  <tr><td>Power: </td> <td><input type="text" name="tHP" size=12 onChange="ComputeTorque()"> HP </td>
                    <td><input type="text" class="ro" name="tPowerWatts" READONLY > Kilowatts </td></tr>
                  <tr><td>Speed: </td> <td><input type="text" name="tRPM" size=12 value="" onChange="ComputeTorque()"> RPM </td>
                    <td><input type="text" class="ro" name="tRatio" READONLY > Gear Ratio </td></tr>
                  </FORM >
                  <SCRIPT  type="text/javascript"> //!--   Beginning of JavaScript -
                  var cEditDate = "2014-06-26";
                  var cMass = 1000;
                  var cGrav = 9.8;
                  var cRoll = 0.02;
                  var cAir = 1.225;
                  var cDrag = 0.25;
                  var cArea = 1.25;
                  var cSpeed = 100;
                  var cAccel = 0.98;
                  var cRPM = 1800;
                  var cHP = 1;
                  var cTorque = 0; //5252*cHP/cRPM;
                  var cPeukert = 1.222;
                  var cRatedCapacity = 100;
                  var cRatedHours = 20;
                  var cBatteryCurrent = 50;
                  var cBatteryHours = 1.2;
                  var cEffectiveCapacity = 60;
                  var fMass = cMass;
                  var fGrav = cGrav;
                  var fRoll = cRoll;
                  var fAir = cAir;
                  var fDrag = cDrag;
                  var fArea = cArea;
                  var fSpeed = cSpeed; // kM/hr
                  var fAccel = cAccel;
                  var fAngle = Math.asin(fAccel/fGrav);
                  var fSlope = 100*Math.tan(fAngle);
                  var fInertia = 0.5*fMass*Math.pow(1000*fSpeed/3600,2);
                  var fWh = fInertia/3600;
                  var fForce = 0;
                  var fPower = 0;
                  var fRPM = cRPM;
                  var fHP = cHP;
                  var fTorque = 5252*cHP/cRPM; //cTorque;
                  var fWheelDiaFt = 2;
                  var fWheelRPM = 0;
                  var fRatio;
                  var fPeukert = cPeukert;
                  var fRatedCapacity = cRatedCapacity;
                  var fRatedHours = cRatedHours;
                  var fBatteryCurrent = cBatteryCurrent;
                  var fBatteryHours = cBatteryHours;
                  var fEffectiveCapacity = cEffectiveCapacity;
                  var prec = Form1.precision.value;
                  function DisplayDate() {
                    Form1.FormDate.value = " "+EditDate;
                  function Compute() {
                    prec = Form1.precision.value;
                    fMass = Form1.tMass.value;
                    fGrav = Form1.tGrav.value;
                    fRoll = Form1.tRoll.value;
                    fAir = Form1.tAir.value;
                    fDrag = Form1.tDrag.value;
                    fArea = Form1.tArea.value;
                    fSpeed = Form1.tSpeed.value;      // kM/hr
                    fAccel = Form1.tAccel.value;
                    fAngle = Math.asin(fAccel/fGrav);
                    fSlope = 100*Math.tan(fAngle);
                    fInertia = 0.5*fMass*Math.pow(1000*fSpeed/3600,2); //Joules = W-sec
                    fWh = fInertia/3600;  // 
                    fForce = (fMass*fGrav*fRoll) + ( ( (fAir*fDrag*fArea)*(fSpeed*fSpeed/12.96) ) / 2 ) + (fMass*fAccel);
                    Form1.tForce.value = fForce.toFixed(prec);
                    Form1.tForceLb.value = (fForce/4.448).toFixed(prec);
                    Form1.tMasslb.value = (2.2*fMass).toFixed(prec);
                    Form1.tSpeedMPH.value = (fSpeed/1.609).toFixed(prec);
                    Form1.tAccelMPH.value = (3.6*fAccel/1.609).toFixed(prec);
                    Form1.tAngle.value = ((180/Math.PI)*Math.asin(fAccel/fGrav)).toFixed(prec);
                    Form1.tSlope.value = (100*Math.tan(fAngle)).toFixed(prec);
                    Form1.tInertia.value = fInertia.toFixed(prec);
                    Form1.tWh.value = fWh.toFixed(prec);
                    fPower = fForce*fSpeed/3.6;
                    Form1.tPower.value = fPower.toFixed(prec);
                    Form1.tPowerHP.value = (fPower/746).toFixed(prec);
                    Form1.tWHKM.value = (fPower/fSpeed).toFixed(prec);
                    Form1.tWHmile.value = (Form1.tWHKM.value*1.609).toFixed(prec);
                    Form1.tWheelDiaInches.value = (Form1.tWheelDia.value/25.4).toFixed(prec);
                    fWheelDiaFt = Form1.tWheelDiaInches.value/12;
                    fWheelRPM = (fSpeed/1.609) * 5280 / (60*fWheelDiaFt*3.1416);
                    fRatio = Form1.tRPM.value/fWheelRPM;
                    Form1.tRatio.value = fRatio.toFixed(prec);
                    Form1.tWheelRPM.value = fWheelRPM.toFixed(prec);
                    Form1.tWheelTorqueLbFt.value = ((fPower/746)*5252/fWheelRPM).toFixed(prec);
                    Form1.tWheelTorque.value = (Form1.tWheelTorqueLbFt.value/0.7375621).toFixed(prec);
                  function ComputePower() {
                  function ComputeTorque() {
                    fRPM = Form1.tRPM.value;
                    fHP = Form1.tHP.value;
                    fTorque = 5252*fHP/fRPM;
                    Form1.tTorque.value = fTorque.toFixed(prec);
                    Form1.tTorqueNM.value = (fTorque/0.7375621).toFixed(prec);
                    Form1.tPowerWatts.value = (fHP*0.746).toFixed(prec);
                  function EV_Initialize() {
                  function log10 (arg) {
                      return Math.log(arg) / 2.302585092994046; // Math.LN10
                  // - End of JavaScript - -->
                  </SCRIPT >
                  </BODY >
                  </HTML >
                  Paul , P S Technology, Inc. and MrTibbs
                  USA Maryland 21030


                  • #10
                    I searched for the latest Android development tools and found Android Studio. After much trouble (and searching and finding tutorials) I was able to build a simple "Hello World" project. Here are some screen shots:

                    I got stuck with this emulator (virtual device) screen for a while until I learned how to sweep the lock icon to unlock it:


                    I connected my Android Archos tablet via USB and I was able to copy the APK file to its storage. The Studio has a direct means to generate a signed app but I don't have that set up. However I found that I could add an "assemble" task to "gradle" and get the APK file. I was able to navigate to the file in my Archos using a nice free app (ES File Explorer) but when I clicked on the APK file it gave an error "There is a problem parsing the package". I've seen that before. I tried various fixes with no joy. Oh, well, I guess I'll have to stay with what I know (Windows), and use the Archos Android for games, or perhaps an HTML application.

                    Hmmm. Let me try my EVcalculator.htm to see if it works with the browser...
                    Paul , P S Technology, Inc. and MrTibbs
                    USA Maryland 21030


                    • #11
                      All righty then!

                      I was able to view the HTML file using HTMLviewer, but it does not run JavaScript:

                      So, I searched and dug a little bit and found that I could enter the URL for the local file in the memory storage device:

                      I added the URL to my bookmarks:

                      This is the same document but as loaded from the website:

                      So, this seems to be a success. I should be able to make "apps" using HTML and JavaScript that can do anything that a website can do, although I don't know if it can access databases or run PHP scripts or operate on the local file system. I do have the capability of hosting a web page on a Microchip Network demo board and it has "hooks" to its own hardware. I have already demonstrated that some time ago, where I could open the web page and click on some buttons which toggled an LED. It can also read an A/D converter and perform other functions. This can be done over WiFi or Ethernet to my router.

                      Let me know if you are interested in learning how to implement these functions, or if you have additional knowledge. I don't claim to be an expert by any means, and I am always eager to learn and try new things.
                      Paul , P S Technology, Inc. and MrTibbs
                      USA Maryland 21030