WebTILP is a new, free and open-source, browser‑based tool to connect to TI graphing calculators without installing a desktop app. It brings the familiar features of the TILP transfer software, to the web, fully client-side.

Today, I'm proud to announce that WebTILP is now available as version 1 beta! You can find it on https://web.tilp.info . This URL currently redirects to a page on TI-Planet, but as the project matures, automatic build/deployment/etc. will be handled by a CI script on GitHub.




Context & creation
For many many years, TILP has been the open-source software of choice for portable TI calculator linking, especially on Linux, but also on macOS, Windows and some of the BSDs in some cases. However, building it (compiling etc.) wasn't always easy or possible for most people, distribution packages weren't always up to date, and the correct installation proved problematic especially on Windows due to dependencies and most importantly driver conflict issues out of our control, stemming from Windows limitations...

We've known for years that a cross-platform, install-free, ready-to-use version of TILP would be possible (and preferred!) if we managed to build it for the web. Recent improvements on the browser and toolchain sides finally made this happen in much simpler ways than it would have been initially. In fact, we knew WebUSB in particular would be working fine, as NumWorks had adopted WebUSB linking at large scale and proved to be a viable option ; later on, TI went the same route for its free online Nspire CX II linking webapp NspireConnect and the ChromeOS TI Connect CE version. There are also free and open-source third-party TI linking webapps like N-Link for the Nspire series (based on libnspire), and ticalc.link (handmade in JS), but nowadays both unmaintained/abandoned several years ago.





WebTILP is built on top of the well‑established tilibs stack (libticalcs, libticables, libtifiles, libticonv), compiled for the browser (to WebAssembly with Emscripten ; some of its dependencies, like GLib, needed a bit of some hacks/workaround to build to WASM, but everything worked out well enough). The browser handles the USB permissions and device access using WebUSB, while WebTILP provides the UI and bridges the calls to the underlying libraries. This means most of the proven protocol logic is the same as the desktop tools, but delivered in an install‑free format. It even works on Chromebooks and Android phones!

What it can do
WebTILP supports the core operations you'd expect, plus a bit more (features depend on the model):
  • Directory/file listing (in table or tree view where having the folder hierarchy makes sense)
  • Send&Receive variables and apps
  • Send OS
  • Screenshots
  • Backups (receive/restore)
  • ROM dump
  • OS receive on TI‑Nspire models ("Fron"-like feature)
  • Software/Hardware information
  • PC=>TI clock sync
  • ... more soon?!
    (some ideas: better folder support, key-sending / remote control, PTT setup & exit...)



TI-89 Titanium Screenshot and Device info, TI-83 Premium CE Screenshot, Transfer dialog





Supported devices / cables
All calculators that have a USB port directly, or a 2.5mm I/O port (for the SilverLink cable) are supported. So yes, for instance the TI-84+CE/83PCE, the TI-Nspire series, the TI-89 Titanium, the TI-83 Plus... even the TI-80 for screenshotting!
To be clear: Not all cable types are supported, just USB ones so far: DirectLink and SilverLink ("Graph Link USB"). The old ones (BlackLink, GrayLink, etc.) won't work.

Some photos by mr womp womp and myself:


A TI-84 Plus CE (with Chrome on Android), A TI-Nspire (sending its OS), A TI-80 (being screenshotted!)





Limitations & caveats
WebTILP is powerful, but it inherits some constraints from the browser environment:
  • Requires a WebUSB‑capable browser (Chrome, Edge, Brave...) - most notably not Firefox or Safari.
  • USB device permissions must be granted by the user (that's the browser's security rule).
  • Some operations may be slightly slower than the desktop TILP (but you probably won't notice it)
  • Protocol edge cases still exist (especially on the TI-92 or TI-Nspire), and recovery can require re‑authorizing or re-plugging the cable (the desktop TILP can reset and re-connect the cable in a software way, but it's not 100% possible on the web…).
    In fact, when things go wrong, you'll likely have to disconnect the cable and refresh the page, for now.
  • Only a USB connection is supported, as mentioned above
  • Last but not least: the driver conflict issue on Windows, caused by long-time limitations of that platform, is still present. This means that if your calculator isn't already recognized and working directly in WebTILP, you'll likely have to follow most of some extra steps with Zadig, a software to tell Windows to use a specific driver (you'll want "WinUSB", in our case) instead of another (libusb (for TILP) or TI's (for TI's software)).
    This doesn't apply to the TI-Nspire CX II series, whose driver from TI uses WinUSB natively, so there's no conflict in the first place.

Note: if something goes wrong, you can try the [💣] button at the top right, to disconnect/reset and try again, but if it's not getting any better, disconnect the cable, refresh the pge, and reconnect it then try again.




How was WebTILP created?
This is the fun part 🔥
As it turns out, this was originally just a test to see how the Codex CLI agentic LLM (I used gpt5.2-codex medium and high, more specifically) was doing, as I had heard it was pretty good.
  • Sure enough, the initial version of WebTILP, for both [part of] the "backend" (the C (now C++) code that bridges tilibs to the JS/WASM side) and the front-end, were generated in around 15 minutes, astonishingly. (I had already prepared the Emscripten environment and build scripts, but this was obviously not the hard part at all. Parts of the "backend" were also from previous test prompts back in December, for manual WebUSB testing when WebTILP wasn't an idea yet, but a big part of it got improved/rewritten anyway).
  • After this first version, and over a few days, more prompts followed, to add features, fix some behaviors, etc.
  • All of this was thus generated entirely with simple prompts. I'm no prompting expert, as I was saying this was in fact my first project with Codex, and I had only just a few (much smaller) experiences with Claude and Junie before).
  • Only some minor CSS tweaks were done manually, literally everything else that you see was LLM-generated!
  • Interestingly, the LLM found a bug in libusb, which I couldn't figure out manually as it wasn't obvious at all in the browser console what was failing (buried deep in the WASM)...
  • The Fron (a program by BrandonW) -like feature to make WebTILP act as a TI-Nspire OS "receiver" (making a connected TI-Nspire send its OS) was also made possible quicker, solving a 10+-year-old TODO, because Codex analyzed the code and explained what needed to be done on the tilibs side in order to make an equivalent on that stack. And it worked! A few previously-undumped OS versions are now available thanks to this (credits to mr womp womp)! Lionel Debroux and I are still working on a patch but the feature will eventually be available in TILP as well 🙂

Needless to say, WebTILP would probably have never existed if it wasn't for this. After all, we have traces of discussions about making WebTILP since at least 2018… with nothing concrete coming out of those, for lack of time mostly, but also front-end expertise (neither Lionel's nor my forte), and motivation to embark on such a big project. The LLM really did solve all this, all at once, in a matter of minutes/hours. It's hard not to be impressed 🤷‍♂️.




Try it and share your feedback
WebTILP is actively under development and still evolving, so more real‑world testing is invaluable. If you run into quirks, please report them (do copy/paste the browser console logs/errors) here, and later on the dedicated GitHub repo!
Some fixes/improvements also translate back into tilibs itself (and thus eventually in the desktop TILP app), after reviewing and rewriting some parts, so it's a win for everyone.




Special thanks:
- Lionel Debroux (maintainer of the tilibs and TILP) for dev/test help etc.
- mr womp womp for lots of testing especially on special calcs...
- Other alpha-testers (d-lta, kg583, MateoConLechuga, qrkadem, sasdallas, Satyamedh, Sumde, Vogtinator, Zeroko...) - sorry if I missed some of you, oops


Happy linking with WebTILP !


Cross-posted from TI-Planet: https://tiplanet.org/forum/viewtopic.php?f=49&t=27263
Finally, a way to put files to all of my TI calcs using my school chromebook! (ti connect CE only worked for the CE)
This looks really cool. I tried dropping an app I wrote as well as OIRAM and it failed. I'm using a TI-84 Plus CE Python. Let me know if there is anything I can do to help as this is something I definitely would like to support.

Using MacOS on a MacBook Air M2 with Chrome.

Log below:
[7:15:25 AM] WASM module initialized.
[7:15:31 AM] Cable hint applied: DirectLink USB
[7:15:31 AM] Handle created: 0x549880
[7:15:31 AM] ERROR: open_cable failed with code 38
[7:15:47 AM] Loaded 1 file(s) from drop.
[7:15:47 AM] ERROR: open_cable failed with code 38

Edit:
This was an error on my part. I had TI Connect CE running in background and it was grabbing a hold of the calculator and causing a conflict. Make sure you don't have anything else trying to use the calculator when running this awesome tool!
New features and improvements:
  • Remote key/actions sending on supported calculators!
  • Folder creation (nested folders supported too, on the Nspire)
  • Implemented Nspire CX II OS update flow (on the tilibs side, it wasn't actually handled yet)
  • Fixed the Nspire=>PC document transfer handling regarding ACKs that made a USB reset needed (was a tilibs fix)

All the patches are up on my branch, already being merged upstream little by little 🙂

SmartView web version when
Well they already have that 👀
New features and fixes!:
  • WebTILP:
    • Proper backup handling, including with .tig files.
    • Dirlist: merge tree view into table view.
    • Rename/Delete var and folders. Quick action buttons on hover.
    • "New folder" feature for calculators that support folders.
    • Fix receiving some variable types (see below)
    • Nspire CX II OS updating support (see below)

  • tilibs (in the process of being reviewed/adjusted/merged upstream):
    • libticalcs: tig restore: skip (e)Z80 RecallWindow (rejected by calcs)
    • libticalcs: fix 89t/9x recv var size for saved files (no more relying on lib clients to pre-populate size fields).
    • libticalcs: dusb: add more progress updates (UI callback stuff).
    • libticalcs: nspire: add more progress updates (UI callback stuff).
    • libticalcs: nspire: fix "xxx weird" by better handling ACKs and unexpected packets. No more USB resets needed after transfers!
    • libticalcs: nspire: fix TI-Nspire CX II OS detection/parsing/sending. You can now update your CX II.

Backup dialog:


New and improved dirlist view:


Next up is CE bundle (OS+Apps, generally) support like in recent TI-Connect CE versions.
This is a bit tricky because we need to transfer the OS first, then everything else. We can't re-connect automatically so the user will have to choose the calc from the browser popup again... In TILP it should be doable fine though.
Would it be possible to embed webTILP into tiplanet.org, or something of the sort? https://web.tilp.info/ is blocked on my chromebook, and I think that school kids would be the most popular use of webTILP.
Well that's unfortunate. You should check with whoever made that block to understand why.

Anyway, it's here: https://tiplanet.org/scripts/webtilibs/webtilp.html
Great! My school uses contentkeeper, so the blocks are automated (I would guess auto because nobody in my district knows or cares about webTILP, judging by the fact that it came out 5 days ago)
Maybe a blanket ban on .info, or something equally stupid.
No, I can access the site https://www.itgrants.info/info-Websites so it is probably just some weird auto-banner.
Does WebTILP not support CE bundle (.b84) files? I was trying to send some bundles generated by famicalc to my CE, and when I tried transferring them to my CE, the following happened: WebTILP accepted the file, but when It was ready to transfer, WebTILP did not specify if it would be stored in archive or RAM. When I hit transfer, the transfer was over instantly, and no files were transferred to the calculator. I also tried sending clibs to my calc, and they transferred successfully, so I know that the error was not on my part.
FYI: I am using the latest Chrome installation on Linux 22.2, and I don't use arch btw.
It doesn't yet, but I had just started looking into that yesterday. So, soon!
Sweet! This will be set to replace my use of ticalc.link!
WebTILP: New features and fixes!:
  • WebTILP:
    • Offline use! Once WebTILP is loaded, you can now use it offline when your device has no internet connection.
      Check the settings modal for updates (you can clear the cache there and manually update when a new version is detected)
    • Variable list: sticky row header for folder names, including with sub-subfolders.
    • Variable list: button to collapse/expand folders. By default, folders are collapsed.
    • Variable list: Rename/Delete options shown only when actually available.
    • Transfers: bugfix: avoid the double confirm prompt in some cases.
    • Transfers: bugfix: deduplicate files from selections before starting a receive transfer.
    • URL parameters to set/override connection settings. (?cable=silverlink&calc=voyage200 for instance)

  • tilibs (in the process of being reviewed/adjusted/merged upstream):
    • libticalcs: more DUSB named attributes and constants.
    • libticalcs: fix some magic bytes in some frames to be more correct protocol-wise.
    • libticalcs: remove OPS_CHATTR and OPS_RENAME from the CE/82AEP, they can't do that apparently.
    • libticalcs: improved emscripten build support.


Still on the TODO list:
  • Bundle (b83/b84) support (better handled than in TI Connect CE)
  • Exit exam mode" button (similar to what TI's software does)


The improved DirList view in action:
Nice updating! Maybe for the .b84 files, maybe you could somehow extract each program/app from the .b84 file, and allow the user to possible choose ones that they don't want to send?
Yep, that's the plan.

In the end, sending the OS last is likely going to be fine, after having sent everything else, it will reboot after the install, so as long as the user doesn't disconnect things in the middle, it should be ok.
Wouldn't sending the OS last cause some FlashApps to be erased in some cases, though ? For instance, that happens on the TI-68k series when sending a version of AMS which spills on more 64 KB Flash sectors than the previous one.
Can you make a reference key that says what all the errors are? (Error 269, Error 3, etc.) Mr Green
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement