/webany

At last! The Web-@nywhere Watch sucks less!

Primary LanguageC

WebAny: Open Source Web-@nywhere Watch Driver

Another Old VCR Stupendous Advance of Science!

Copyright (C)2024 Cameron Kaiser.
All rights reserved.
BSD license.

What it is

The Web-@nywhere Watch (hereafter Web Anywhere Watch) is a primitive early craptastic smartwatch circa 2000-1, produced by Kinger International in Hong Kong as a successor to its CyberX watch. Its chief marketing point was the purported ability to receive data "from the Web" and store approximately 93K worth on the watch for later consumption (in the Browser mode). In actuality the process was completely dependent on Kinger's FTP site and limited to specific partner sites, facilitated by a Windows 95/98 client which received pre-formatted data and uploaded it to the device. There was no way to view arbitrary content, and as their website had been defunct for decades, there was no way to use the client to fetch data anymore. This project fixes that and runs anywhere its components can be (tested on Linux/ppc64le and Mac OS X for PowerPC).

Read more about this watch and how it works.

This project contains two distinct pieces:

  • wanycode.pl is a Perl script that takes lines of ASCII text on standard input and encodes them for the Web Anywhere Watch's non-standard character format, emitting the binary data on standard output. The first line is treated as the index; each line, including the index, will appear as a separate line on the watch screen. The output is pre-padded and contains the header and all checksums.
  • wanyload.c is a C program that pushes any number of files specified on the command line to the watch. It is in basic C and only requires POSIX termios.h. The watch must be placed into Data Link, Download mode (the program will wait for a bit to see if the watch responds). In this version these would be files generated by wanycode.pl; files you provide it must be pre-padded and have a header and checksums. The port used is /dev/ttyUSB0 by default, or pass -p /path/to/port as the initial arguments before any files are specified.

To show you the process of encoding data for uploading, a live demonstration with actual Web data is included. The Makefile, when run with make, will compile wanyload.c, download live weather data for international cities and the western United States from the U.S. National Weather Service, reformat them for the watch's screen, convert them to the watch's internal encoding, and then push them to a connected Web Anywhere Watch (remember to put it into Data Link, Download). They will appear as separately selectable indices. If you run this multiple times, you will get multiple copies on your watch (each with the same index) unless you delete old ones first.

Legal

This program reverse-engineers a product of Kinger International. It is not known what, if any, company retains the rights to the Web Anywhere Watch.

Don't open issues

... except for actual bugs. This is a toy project. I might do more with it later; I might not. Feature requests without code will be ignored or deleted. Refactors will not be accepted (fork the project). Seriously, this watch isn't great, even by the standards of its time, and I merely did this for fun to make it useable and marginally less terrible. Use this project in that light.

License

This project is released under the 2-clause BSD license.

Copyright (C) 2024 Cameron Kaiser. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.