Job Posting: Chrome Plugin Developer

Job Description: Create a chrome plugin that is able to interface with the Arduboy without the need for any additional software beyond the plugin.

  • Upload .hex file over USB serial (same as avrdude)
  • Upload .bin file same as the python tools as @Mr.Blinky

The goal is to create a one click experience for users of the Arduboy so that individual games or complete game cartridges can be installed directly in the browser.

Experience Required: Have authored and published a chrome plugin before. Ability to read python language.

Preferred: Experience with web USB, Serial ports or programming microcontrollers

Strong Candidates have: Web development experience

Compensation: This is a paid position, the work will be performed under contract and the payment is negotiable. Partial payments will be made upon completing milestones of the project with a majority of the payout when the work is completed. Inquire within.

Future Opportunity: If the work goes well and you enjoy it, there are other development opportunities in the future. Redesigning the website for better user experience. Integrating the emulator web app further into the website, or as an stand-alone mobile app.

If you would like to apply for this position please use contact form:

I’ll be posting the job here first for a couple weeks if nobody in the community is interested I’ll start looking around on job boards. This is a feature that will make any “late to the party” adoption of Arduboy users who might not be a software developer have a much better experience. If you have any questions about the position please let me know below.

6 Likes

Looks like what you actually want is for someone to make a webpage with javascript using Chrome’s WebSerial, not a plugin using WebUSB.

Sure, I mean… if that works!

I remember looking into WebUSB when I was making ProjectABE. I concluded that it’s useful for Arduboy code to talk to a website, but not for programming. WebSerial is a much newer thing, and it’s going to replace the Chrome API I had to use at the time.

2 Likes

Come work for Arduboy!

1 Like

Yeah Felipe … I have a few things I would love for you to resolve in the current emulator as well. All good for the community!

something like this done for ESPboy by @Steph and it works fine ESPboy AppStore Demo

2 Likes

I was hoping @steph would chime in … this functionality on the ESPboy AppStore looks very promising.

I found this repo on GitHub … GitHub - benjaminaigner/avr109-webserial: AVR109 compatible uploader with WebSerial

And its referenced in this discussion.

It is a POC but it looks like the author was able to flash hex files to the system. A knowledgeable person (and that rules me out!) might be able to take this and extend it into something workable. But maybe that would only allow you to flash a single game - not an entire cart.

1 Like

I like WLED installer https://install.wled.me/ transfers the hex and then conects and lets you set some configuration via serial

“Proof of Concept”?

If uploading a single .hex works, uploading data to the FX chip should work too (with the right modifications).

It could do with a bit of cleaning up, but it looks like it’s doing everything it should be.

Speaking as someone who has written a command line uploader (which I never published), you’d be surprised how easy it is. The majority of the work can be understood by reading about AVR109 (the actual commands are listed on page 8) and Intel HEX. It’s basically just commands sent over serial, with the .hex specifying what data needs to be written to which areas of progmem.

The most difficult part is the ‘port knocking’ - to put the Arduboy into bootloader mode you have to briefly connect to one port, close the connection and then move to another port, and it can be a bit finnicky if you don’t have the settings right. (I got it working in C++ with direct WIN32 calls, but I don’t think I got it working in C#.)

Recycling ProjectABE’s flasher to use navigator.serial instead of chrome.serial should be simple enough and I can help with that and the “integrating the emulator web app further” bit. I’ll probably have to remove the IDE part soon while I’m it, since Heroku announced they’re killing off the free plans.

I tried both with latest Chrome browser and it seems that in both cases it only lists Serial ports that where present when the browser started. It doesn’ add and remove new or removed ports. Wondering if it’s just me…

*For the first I commented out lines 214 and 251 so all ports where listed

I haven’t had much of a chance to play with it. When you commented out the lines does it work properly?

No. commenting out those lines only shows all ports (that where available during browser startup)

Oh I see. I do not know enough about it but assume that you must be able to re-enumerate them somehow.

The intent of the API is probably to make use of the connect and disconnect events rather than continually polling getPorts.


I just realised this API isn’t available on Firefox, so that’s probably a large chunk of the userbase who wouldn’t have access to it anyway.

(It’s also not available on any of the listed tablet/phone browsers.)

I use Firefox myself however Chrome / Chromium has anywhere between 66 - 75% of the market depending on which site you believe. Firefox is low - approx 7 or 8 %.

The general market probably, but not necessarily the developer market or this forum’s userbase.

I’m half tempted to run a poll.
Curiosity got the better of me:


(Also, I wonder if that figure includes phones and tablets, which usually have Chrome preinstalled.)