• Tessel Project joins Dojo Foundation under open governance

    Thursday, May 21, 2015

    5/20/15– Tim Ryan

    We have an exciting announcement to make: Ownership and direction of the Tessel Project now belongs to a Steering Committee which exists independently of Technical Machine. This group exists as part of the Dojo Foundation. [ Tweet This ] [ Learn More ]

    Tessel has become the infrastructure to prototype and build Internet-connected devices, and the starting point for makers and developers to make their ideas into reality. The Internet of Things is still very young, and we at Technical Machine want to capitalize on the opportunity to make a huge impact on these technologies as they increasingly become part of our lives.

    The Tessel Project spins out the development of Tessel, its module ecosystem, and its intuitive tooling, while retaining the manufacturing relationships and expertise gained from selling Tessel the past two years. All royalties off of selling hardware will be reinvested into the project’s own development and outreach. Our goal is an open source project that rivals the availability, manufacturing capacity, and support of more established, but often locked-down hardware solutions.

    This move to open governance borrows heavily from io.js’s Technical Committee model. It adopts explicit communication policies, clear avenues for contribution, and a culture of encouraging new contributions. By moving toward open governance, we’re hoping to make the Tessel Project a leader and a model for an open community-driven project in the hardware space.

    Passionate about Nodebots, education, or makerspaces? Interested in exploring new concepts or bringing entire products to market? Get involved as a collaborator, and you’ll be supported by a community with like-minded goals and ambitions. Or join us on Slack and share your feedback. We’d love to hear from you!

    All the best,

    Tim, Jon, Kelsey, Jia, Eric, Kevin, Kwyn, and Ken

    PS: The Tessel 2 CLI can be worked on today without needing hardware by using the Tessel 2 Virtual Machine. There are plenty of open issues that we can use help on. What ideas will you bring to Tessel?

    #tessel #tessel 2 #hardware #open source #governance #io.js #node.js #javascript #web developers #dojo #announcement

  • This Week in Tessel — May 13, 2015

    Wednesday, May 13, 2015

    Developing Tessel 2

    Manufacturing Update We’re eagerly anticipating a shipment from our manufacturer of fifteen prototype boards, expected in the next two weeks. This marks the fourth revision of Tessel 2 and the expected final design before full manufacturing.

    Developing for Tessel without Tessel The process for developing for Tessel 2 today is getting easier. Last week Jon McKay wrote a post on contributing to Tessel 2 without hardware. To make this process even easier, we are designing a command line tool to simply t2-vm run so you can get started with Tessel in just two lines.

    Rust Support How will the familiar Tessel experience be used to program in Rust? t2 init --lang rust <project_name> now creates a new Cargo project! Currently the process for targeting Rust code for a Tessel 2 is messy, but we’re working on cross-compiling the Rust standard library without needing additional tools. More Rust examples will be demoed in the upcoming weeks.

    Test Rig Eric Kolker spent time playing mechanical engineer this week. A blog post about Tessel’s entire testing process will come later, but here are some pretty renders of the publicly available test rig.

    Renders of our Test Rig


    Tessel-powered cereal dispenser As part of Fullstack Academy’s Tessel hack day, student Carlos Mendoza created an automatic cereal dispenser (or kibble dispenser?) that dispenses food at the behest of a webapp.

    New projects:

    Community Updates

    Tessel Worldwide Matteo Collina held a Tessel Workshop as part of JSDay in Verona, Italy. Plenty of hardware, plenty of cool hacks! Tessel was also spotted around the US at Fullstack Bootcamp in NYC as part of a Tessel Hack Day, apresentation at OpenWest Conf in Utah by Kevin Sidwar, and at IoT World in San Francisco.

    This Week in Tessel is sent out every Wednesday! In the next week we’ll have some exciting news for the Tessel project. Talk to you soon. — The Tessel Team

    #tessel #this week in tessel #hardware #manufacturing #design #javascript #node #io.js #code #international #updates

  • Contributing to Tessel 2 Without Hardware

    Thursday, May 7, 2015

    5/7/15– Jon McKay

    How to contribute to the Tessel project

    We’ve received quite a few inbound requests asking how folks can get involved in the development of Tessel 2. That’s why we’re excited to release a Virtual Box image that will enable you to emulate a Tessel 2 from your computer and even use your computer’s USB ports as Tessel 2 USB ports. Follow along for a quick guide on how to get up and running with the VM.

    Edit: the VM development process has been improved and you can find updated documentation on the vm repo.

    Tessel 2 features two 10-pin module ports for lower-level microcontroller peripherals and two USB ports for peripherals like flash drives, 3G dongles, and webcams. You can use the VM start building USB modules like this Node wrapper that works with most off-the-shelf webcams. It’s a great way to become a part of the core contributors before the actual hardware is generally available.

    You’ll need to install Vagrant (version 1.6 or greater) as a prerequisite. After that, you’ll need to pull down the CLI, generate an SSH key, and connect to the shiny new VM:

    # Clone the CLI repo
    > ~/projects/ git clone git@github.com:tessel/t2-cli.git
    # Link it so you can develop and use it globally
    > ~/projects/ cd t2-cli; npm link --local;
    # Generate the SSH key to use with the VM
    > ~/projects/t2-cli t2 key generate
    # From the containing folder, clone the VM repo
    > ~/projects git clone git@github.com:tessel/t2-vm.git
    # Download dependencies
    > ~/projects/ cd t2-vm; vagrant plugin install vagrant-triggers;
    # Start up the VM
    > ~/projects vagrant up

    At this point, you should be able to search for all advertising devices and list them on the command line (using mDNS):

    > ~/projects/t2-vm t2 list
    > INFO Scanning for connections...
    > INFO LAN CONNECTION ip: , name:  Tessel-080027AF44E2 , Authorized:  true

    And then you can deploy code

    # From the CLI repo...
    > ~/projects/t2-cli t2 run test/test-deploy-script.js
    > INFO Connecting to Tessel...
    > INFO Connected over LAN. IP ADDRESS:
    > INFO Bundling up code...
    > INFO Bundled. Writing to T2.... 4096
    > INFO Deployed.
    > INFO Running script...
    > If I had an actual LED, it would be on right now...
    > If I had an actual LED, it would be off right now...
    > If I had an actual LED, it would be on right now...

    Biggest issues to tackle

    We recently completed the entire spec for the Tessel 2 CLI on our forums and added Github issues for each feature that needs to be written. There are still a lot of interesting features to build for the CLI and these issues are the lowest hanging fruit.

    In addition, there are a couple of larger issues that could use some love. Please do get in touch if you’d like to get involved with these features:

    • @allanca started working on a binary server that can inject pre-compiled versions of modules with binary dependencies into bundles being deployed onto a Tessel. We need to get these changes rolled into the new CLI and the actual server deployed.
    • @nplus11 has started porting Tessel libraries to Rust including the Tessel interface and the Accelerometer Module. The CLI needs to be modified to accept Rust projects as well as JavaScript and the rest of the modules need to be ported from JS to Rust (that might be a little harder without the hardware).

    Get in touch

    We’re looking forward to see more of what the community cooks up. Get in touch with us on IRC (#tessel) or on the Forums if you have any questions or suggestions.

    #jon mckay #tessel #design #contributing #open source

  • This Week in Tessel — May 6, 2015

    Thursday, May 7, 2015

    Hello Tesselators, we’re happy to present to you our first installment of This Week in Tessel. Here we will highlight the latest news, projects, and events, from code, to community, to hardware manufacturing.

    Developing Tessel 2

    Moving towards Manufacturing There is now an approximate timeline for manufacturing and shipping Tessel 2:

    1. Week of 5/25 — Fifteen prototype boards are sent back from the manufacturer (bringing the total number of Tessel 2’s up to 22!) These will undergo final testing before starting production.

    2. Week of 6/8 — Finalize test rigs and procedures.

    3. Week of 6/15 — Begin final production in China.

    4. Late July / Early August — Expected shipments and general sale of Tessel 2.

    Developments from the engineering side:


    New hardware module Community member @nmoadev created a Tessel module for Adafruit’s backlit keypad as part of an Embedded Systems final project.

    New projects:

    Community Updates

    JavaScript and Hardware Tomomi Imura chronicles the dive from pure code to hardware, including Tessel, LittleBits, Arduino, Johnny-Five, and Raspberry Pi in Hardware Hacking for JavaScript Peeps: How I Got My Hands on Breadboards and Resistors

    More blog posts:

    Tessel Worldwide This week, #SMARTuniverCITY in Barcelona learned about gathering data from sensors on Tessel. Students from Singapore experimented with Tessel at an SAP HANA Codejam.

    Come back next Wednesday for more! — The Tessel Team

    Anything you would like mentioned in the next issue? Tweet @technicalhumans to let us know!

    #tessel #this week in tessel #hardware #manufacturing #design #javascript #node #io.js #code #updates

  • Run, Push, and Erase: Developing on Tessel 2

    Wednesday, March 18, 2015

    3/18/15– Kelsey Breseman

    This post should give you a glimpse into developing on Tessel’s CLI.

    The basic interaction of a Tessel is to create some code, then send it to the device to execute.

    Current Tessel users should be familiar with tessel run to run the code one time in RAM, tessel push, which pushes the code over to Tessel’s Flash memory to be executed whenever the Tessel boots up, and tessel erase, which erases any pushed code.

    Tessel 2 runs on a totally different architecture than does Tessel 1, so we’re recreating the command line interface to act in the exact same way, but with a different implementation.

    Of course, this setup will get easier over time as developments continue.

    Setting up Tessel 2

    Tessel 2 is based on the OpenWRT architecture (& the same WiFi/processor chip), so for applications that don’t involve much hardware, I can use an OpenWRT Node or for a no hardware required dev setup, this Vagrant box to act as a Tessel 2.

    Here’s my setup:

    OpenWRT Node setup

    OpenWRT Node wired to USB serial, and powered (via a small USB hub) by microUSB. Both of those plug into another USB hub, which plugs into my computer.

    Before you can do anything, you’ll have to install the serial cable (we use this one), and then dterm (it’s on brew) to talk to it over the command line. For easy development, you can then set up an alias to set up serial comms with Tessel 2:

    alias v2="dterm /dev/tty.usbserial 115200"

    Assuming that’s all working properly, you can now run your aliased command v2 and hit enter to boot up. Congrats! You’re now root on your Tessel 2/OpenWRT. You should be able to save files and run them with scp -r path/to/code-folder root@ip:/path/to/dest (/tmp is good).

    Setting up CLI

    Great, now you can get Tessel 2’s CLI up and running. On your computer (not on Tessel 2), clone the V2 CLI repo and follow the instructions in the readme. Again, this is going to change and eventually be npm installable, but this works for now.

    Be sure to fill out the config.env file – a quick ifconfig on Tessel 2 should get you its IP address.

    All right! Now you should be able to run the CLI from your computer’s terminal. What fun! If you’ve gotten this far, you’re both qualified and welcome to begin contributing to the Tessel 2 CLI– check out the issues/features to make here!

    How Tessel 2 Calls Run

    The rest of this post is a walkthrough of how Tessel’s Run, Push, and Erase commands work, just to get you into the code.

    Jon actually wrote the run command, but I can walk you through it.

    The functions reside in the lib folder of the repo, and are called from bin/prime.js. So any new command will need a new file in lib and a new function call in prime.js.

    The run and push commands are both in lib/deploy.js, because they both deploy code. Note that this is an exception to the naming scheme; most functions should have their own file in lib and be called function.js.

    When someone types tessel run file.js in the command line, prime.js calls sftpDeploy and passes it the filename to deploy.

    Your computer then SSH’s into Tessel 2…

    function sftpDeploy(opts, push) {
     tessel.logs.info('Connecting to remote Tessel...');
      // Create a new SSH client connection object
      ssh.createConnection(function(err, conn) {

    …stops existing processes and deletes old code…

    conn.exec('/etc/init.d/tessel-app stop; rm -rf /tmp/remote_code’, function(err, stdin) {

    …makes a tarball of all the files relevant to your code…

    // Gather details about the file structure of the script being sent
    var ret = tessel.analyzeScript(process.cwd() + "/" + opts.entryPoint, {verbose: opts.verbose});
    // Tar up the code to improve transfer rates
    tessel.tarCode(ret.pushdir, {node: true}, function(err, bundle) {

    …and sends it over the WiFi, really just copying it into a temporary folder.

    conn.exec('mkdir /tmp/remote_code/; tar -x -C ' + filepath, function(err, rstdin) {

    Once finished, Tessel 2 runs your code by calling node app.

    The push command is only slightly different: if you specify to sftpDeploy that you are pushing code, it copies it into a different (non-temporary) folder (/app instead of /tmp/remote_code’), and also makes a file calledstart` within that folder, which Tessel 2 will execute whenever it boots up:

    conn.exec("echo '#!/bin/sh\ncd /app\nexec node .' > " + filepath + "/start && chmod +x '" + filepath + "/start'", function (err, newStream) {

    Tessel Erase

    If that sounded simple, it was. Tessel erase is even simpler: you call tessel erase from your command line and your computer SSH’s into Tessel 2 stops existing processes and calls rm -rf on the folder where pushed code is stored:

    function erase(opts) {
      var filepath = '/app';
      // Create a new SSH client connection object
      ssh.createConnection(function(err, conn) {
        conn.exec('/etc/init.d/tessel-app stop; rm -rf /app’, function(err, rstdin) { });

    Moving Forward

    This whole thing took only part of a day, including setting up the Tessel 2 and writing this blog post. Next, I’m tackling some of the Tessel 2 configuration to make setup simpler. We’re in a fun place right now, where you can pick a feature and build it out. Want to join?

    Tessel 2 CLI repo


    #tessel 2 #tessel #tessel2 #technical #kelsey breseman #run #push #erase #tessel push #code #developer #development setup

July 2017

February 2017

November 2016

October 2016

September 2016

August 2016

July 2016

June 2016

April 2016

March 2016

February 2016

November 2015

September 2015

August 2015

July 2015

June 2015

May 2015

March 2015

February 2015

January 2015

December 2014

November 2014

October 2014

September 2014

August 2014

July 2014

June 2014

May 2014

April 2014

March 2014

February 2014

January 2014

December 2013

November 2013

October 2013

September 2013

August 2013

July 2013