{"id":9747,"date":"2024-03-25T10:08:09","date_gmt":"2024-03-25T10:08:09","guid":{"rendered":"https:\/\/www.bairesdev.com\/tools\/tessel\/?p=9747"},"modified":"2024-05-09T11:06:10","modified_gmt":"2024-05-09T11:06:10","slug":"cli","status":"publish","type":"post","link":"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/","title":{"rendered":"Command Line Interface"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_66_1 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Installation\" title=\"Installation\">Installation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Updating_Tessel_2_On-board_OSFirmware\" title=\"Updating Tessel 2 On-board OS\/Firmware\">Updating Tessel 2 On-board OS\/Firmware<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#How_do_I_know_if_I_need_to_update_my_T2\" title=\"How do I know if I need to update my T2?\">How do I know if I need to update my T2?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Updating\" title=\"Updating\">Updating<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Setup\" title=\"Setup\">Setup<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#USB\" title=\"USB\">USB<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#LAN\" title=\"LAN\">LAN<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#SSH\" title=\"SSH\">SSH<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Virtual_Machine\" title=\"Virtual Machine\">Virtual Machine<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Usage\" title=\"Usage\">Usage<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Starting_Projects\" title=\"Starting Projects\">Starting Projects<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Project_Files\" title=\"Project Files\">Project Files<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Tessel_Management\" title=\"Tessel Management\">Tessel Management<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Code_Deployment\" title=\"Code Deployment\">Code Deployment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Using_Wifi\" title=\"Using Wifi\">Using Wifi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.bairesdev.com\/tools\/tessel\/docs\/cli\/#Create_An_Access_Point\" title=\"Create An Access Point\">Create An Access Point<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"installation\"><span class=\"ez-toc-section\" id=\"Installation\"><\/span>Installation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Prerequisites for installation:&nbsp;Node.js&nbsp;4.2.x or greater<\/p>\n\n\n\n<p><code>npm install -g t2-cli<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"updating-tessel-2-on-board-osfirmware\"><span class=\"ez-toc-section\" id=\"Updating_Tessel_2_On-board_OSFirmware\"><\/span>Updating Tessel 2 On-board OS\/Firmware<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-do-i-know-if-i-need-to-update-my-t2\"><span class=\"ez-toc-section\" id=\"How_do_I_know_if_I_need_to_update_my_T2\"><\/span>How do I know if I need to update my T2?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>t2-cli&nbsp;and&nbsp;t2-firmware are separately versioned.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For updating&nbsp;t2-cli: When a&nbsp;CLI&nbsp;command is run on an internet-connected computer, the&nbsp;CLI&nbsp;automatically checks for updates to the&nbsp;<code>t2-cli<\/code>&nbsp;module. If an update is available, the&nbsp;CLI&nbsp;will provide the update instructions using a notifier to the user (as shown below). The&nbsp;CLI&nbsp;can be updated with a global npm re-install of the&nbsp;CLI&nbsp;using the command&nbsp;<code>npm install -g t2-cli<\/code>.<em>The&nbsp;CLI&nbsp;only checks once per day to ensure that the&nbsp;CLI&nbsp;functioning does not slow down.<\/em>  <\/li>\n\n\n\n<li>For updating&nbsp;t2-firmware:The user does not get update information for&nbsp;t2-firmware from the&nbsp;CLI. The most convenient and fastest way to find out if a firmware update is needed is by running the&nbsp;<code>t2 update<\/code>&nbsp;command and the&nbsp;<code>t2-firmware<\/code>&nbsp;will update automatically if there is a newer firmware version available. Otherwise, you can run&nbsp;<code>t2 version<\/code>&nbsp;to get the version running on your Tessel, and then&nbsp;<code>t2 update -l<\/code>&nbsp;to see the 10 newest versions available.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"777\" height=\"437\" src=\"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-content\/uploads\/2024\/03\/CLI_Update.png\" alt=\"\" class=\"wp-image-9749\" style=\"width:535px;height:auto\" srcset=\"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-content\/uploads\/2024\/03\/CLI_Update.png 777w, https:\/\/www.bairesdev.com\/tools\/tessel\/wp-content\/uploads\/2024\/03\/CLI_Update-300x169.png 300w, https:\/\/www.bairesdev.com\/tools\/tessel\/wp-content\/uploads\/2024\/03\/CLI_Update-768x432.png 768w\" sizes=\"(max-width: 777px) 100vw, 777px\" \/><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"updating\"><span class=\"ez-toc-section\" id=\"Updating\"><\/span>Updating<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Simply run&nbsp;<code>t2 update<\/code>. If you want to update to a specific version, run&nbsp;<code>t2 update -v VERSION_NUM<\/code>&nbsp;where&nbsp;<code>VERSION_NUM<\/code>&nbsp;is one of the versions returned by&nbsp;<code>t2 update -l<\/code>&nbsp;(like&nbsp;<code>t2 update -v 0.0.6<\/code>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setup\"><span class=\"ez-toc-section\" id=\"Setup\"><\/span>Setup<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"usb\"><span class=\"ez-toc-section\" id=\"USB\"><\/span>USB<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Connecting to a Tessel 2 over USB requires no special setup.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lan\"><span class=\"ez-toc-section\" id=\"LAN\"><\/span>LAN<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>In order to authorize the device with your computer to work over a&nbsp;LAN&nbsp;connection, call&nbsp;<code>t2 provision<\/code>&nbsp;after connecting it via USB. This will place an SSH key on the device. Use the&nbsp;<code>t2 wifi<\/code>&nbsp;command as described below to connect Tessel 2 to a local network. You should now be able to access your Tessel 2 remotely.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ssh\"><span class=\"ez-toc-section\" id=\"SSH\"><\/span>SSH<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>To connect to your Tessel 2 over SSH use the&nbsp;<code>t2 root<\/code>&nbsp;command. Before you connect, call&nbsp;<code>t2 provision<\/code>&nbsp;to authorize your computer to access your Tessel via SSH.<\/p>\n\n\n\n<p>Usage<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>t2 root<\/code>\n<ul class=\"wp-block-list\">\n<li><code>[--timeout]<\/code>&nbsp;Set timeout in seconds for scanning networked Tessels. The default is&nbsp;<code>5<\/code>&nbsp;seconds.<\/li>\n\n\n\n<li><code>[--key]<\/code>&nbsp;SSH key for authorization with your Tessel. Optional, only required if you have changed the keypath after your Tessel was provisioned.<\/li>\n\n\n\n<li><code>[--name]<\/code>&nbsp;The name of the Tessel where the command will be executed.<\/li>\n\n\n\n<li><code>[--output]<\/code>&nbsp;Enable or disable writing command output to stdout\/stderr. Useful for&nbsp;CLI&nbsp;API&nbsp;consumers. Set to&nbsp;<code>true<\/code>&nbsp;by default<\/li>\n\n\n\n<li><code>[--loglevel]<\/code>&nbsp;Set the loglevel. It is set to&nbsp;<code>basic<\/code>&nbsp;by default. Available options are&nbsp;<code>'trace', 'debug', 'basic', 'info', 'http', 'warn', 'error'<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"virtual-machine\"><span class=\"ez-toc-section\" id=\"Virtual_Machine\"><\/span>Virtual Machine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Check out the\u00a0Virtual Machine repo\u00a0for instructions on how to set up the VM. All\u00a0CLI\u00a0commands except\u00a0<code>provision<\/code>\u00a0and\u00a0<code>wifi<\/code>\u00a0should be functional with the VM.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"usage\"><span class=\"ez-toc-section\" id=\"Usage\"><\/span>Usage<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Specify which Tessel to use with the&nbsp;<code>--name &lt;name&gt;<\/code>&nbsp;option appended to any command. If&nbsp;<code>--name<\/code>&nbsp;is not specified,&nbsp;CLI&nbsp;will look for an environment variable, e.g.&nbsp;<code>export TESSEL=Bulbasaur<\/code>. If none of the above are specified and there is one Tessel connected over USB, this Tessel will be preferred. Finally, if there is only one Tessel available and none of the above are specified,&nbsp;CLI&nbsp;will choose that Tessel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"starting-projects\"><span class=\"ez-toc-section\" id=\"Starting_Projects\"><\/span>Starting Projects<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>t2 init<\/code>&nbsp;in the current directory, create a package.json and index.js with&nbsp;Hello World code.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"project-files\"><span class=\"ez-toc-section\" id=\"Project_Files\"><\/span>Project Files<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Along with the package.json and index.js included in the&nbsp;<code>t2 init<\/code>&nbsp;process, there are some other files that may be useful for your project:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>.tesselignore<\/code>&nbsp;similar to .gitignore or&nbsp;.npmignore, this file should list any files or directories you want ignored by the&nbsp;T2&nbsp;bundling and deployment process. This is handy when using the&nbsp;<code>--full<\/code>&nbsp;flag, which tells&nbsp;T2&nbsp;to bundle everything in the project directory.<\/li>\n\n\n\n<li><code>.tesselinclude<\/code>&nbsp;the overriding and opposite behavior of&nbsp;<code>.tesselignore<\/code>, this file should list any files or directories you want included with the&nbsp;T2&nbsp;bundling and deployment process. This is handy for including non-JavaScript assets, like HTML, CSS, and images, for use within your project.\n<ul class=\"wp-block-list\">\n<li>In your JavaScript program, assets listed in the&nbsp;<code>.tesselinclude<\/code>&nbsp;file should always be accessed using&nbsp;<code>__dirname<\/code>&nbsp;(read more about&nbsp;<code>__dirname<\/code>&nbsp;in the&nbsp;Node.js docs). For example, if there is a file at&nbsp;<code>public\/index.html<\/code>&nbsp;and it&#8217;s listed in your&nbsp;<code>.tesselinclude<\/code>, from your JavaScript program, you&#8217;d read it like this:&nbsp;<code>fs.readFile(path.join(__dirname, \"public\/index.html\"), \"utf8\", (error, contents) =&gt; ...);<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tessel-management\"><span class=\"ez-toc-section\" id=\"Tessel_Management\"><\/span>Tessel Management<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>t2 key<\/code>&nbsp;will generate a local SSH keypair for authenticating to a Tessel. Use with the&nbsp;<code>generate<\/code>&nbsp;argument to generate a new local SSH keypair for authenticating to a Tessel.<\/li>\n\n\n\n<li><code>t2 list<\/code>&nbsp;will show what Tessels are available over WiFi and USB.<\/li>\n\n\n\n<li><code>t2 provision<\/code>&nbsp;will authorize your computer to access a Tessel over SSH. (USB-connected Tessel only)<\/li>\n\n\n\n<li><code>t2 rename<\/code>&nbsp;will change the name of a Tessel.<\/li>\n\n\n\n<li><code>t2 reboot<\/code>&nbsp;will reboot your Tessel.<\/li>\n\n\n\n<li><code>t2 restore<\/code>&nbsp;Restore your Tessel to factory defaults by installing the factory version of&nbsp;OpenWrt-Tessel, and&nbsp;T2-Firmware.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"code-deployment\"><span class=\"ez-toc-section\" id=\"Code_Deployment\"><\/span>Code Deployment<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>During code deployment,&nbsp;CLI&nbsp;looks for&nbsp;<code>.tesselignore<\/code>&nbsp;and&nbsp;<code>.tesselinclude<\/code>&nbsp;files to let it know which files it should bundle up and push over to Tessel. In the default bundling process,&nbsp;CLI&nbsp;takes the file passed into the&nbsp;<code>run<\/code>&nbsp;or&nbsp;<code>push<\/code>&nbsp;command and uses it as an entry point to build a dependency graph (similar to&nbsp;Browserify). Once the dependencies are known, binary modules are replaced by pre-compiled (for mips) binaries, assets are copied, and everything is tarred before sent to the awaiting Tessel.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>t2 run &lt;file&gt;<\/code>&nbsp;copy the file and its dependencies into Tessel&#8217;s RAM &amp; run immediately. Use this during development of your device application.\n<ul class=\"wp-block-list\">\n<li><code>[--lan]<\/code>&nbsp;deploy over&nbsp;LAN&nbsp;connection<\/li>\n\n\n\n<li><code>[--usb]<\/code>&nbsp;deploy over USB connection<\/li>\n\n\n\n<li><code>[--slim]<\/code>&nbsp;true by default, copy only files needed by the program to run<\/li>\n\n\n\n<li><code>[--full]<\/code>&nbsp;the opposite of &#8211;slim, copy all the files in the project directory<\/li>\n\n\n\n<li><code>[--compress]<\/code>&nbsp;true by default, compress and minify the project code prior to copying it to the device<\/li>\n\n\n\n<li><code>[--binopts]<\/code>&nbsp;Arguments sent to the binary (e.g. Node.js, Python). For example, to enable ES modules in Node use&nbsp;<code>--binopts=\"--experimental-modules\"<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>t2 push &lt;file&gt;<\/code>&nbsp;copy the file and its dependencies into Tessel&#8217;s Flash memory &amp; run immediately. Once deployed with&nbsp;<code>push<\/code>&nbsp;command, the device application will automatically run every time the Tessel restarts.\n<ul class=\"wp-block-list\">\n<li><code>[--lan]<\/code>&nbsp;deploy over&nbsp;LAN&nbsp;connection<\/li>\n\n\n\n<li><code>[--usb]<\/code>&nbsp;deploy over USB connection<\/li>\n\n\n\n<li><code>[--slim]<\/code>&nbsp;true by default, copy only files needed by the program to run<\/li>\n\n\n\n<li><code>[--full]<\/code>&nbsp;the opposite of &#8211;slim, copy all the files in the project directory<\/li>\n\n\n\n<li><code>[--compress]<\/code>&nbsp;true by default, compress and minify the project code prior to copying it to the device<\/li>\n\n\n\n<li><code>[--binopts]<\/code>&nbsp;Arguments sent to the binary (e.g. Node.js, Python). For example, to enable ES modules in Node use&nbsp;<code>--binopts=\"--experimental-modules\"<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>t2 erase<\/code>&nbsp;erase any code pushed using the&nbsp;<code>t2 push<\/code>&nbsp;command<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"using-wifi\"><span class=\"ez-toc-section\" id=\"Using_Wifi\"><\/span>Using Wifi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>t2 wifi<\/code>&nbsp;show details about an existing WiFi connection\n<ul class=\"wp-block-list\">\n<li><code>[-l]<\/code>&nbsp;lists the available networks<\/li>\n\n\n\n<li><code>[-n SSID]<\/code>&nbsp;required, connects to the provided SSID<\/li>\n\n\n\n<li><code>[-p PASS]<\/code>&nbsp;optional, connects with the given password<\/li>\n\n\n\n<li><code>[-s SECURITY]<\/code>&nbsp;connects with the given security type, valid options:\n<ul class=\"wp-block-list\">\n<li><code>none<\/code>&nbsp;open network, no need for a password<\/li>\n\n\n\n<li><code>wep<\/code>&nbsp;WEP network, password required<\/li>\n\n\n\n<li><code>psk<\/code>&nbsp;WPA Personal, password required<\/li>\n\n\n\n<li><code>psk2<\/code>&nbsp;WPA2 Personal, password required<\/li>\n\n\n\n<li><code>wpa<\/code>&nbsp;WPA Enterprise, password required<\/li>\n\n\n\n<li><code>wpa2<\/code>&nbsp;WPA2 Enterprise, password required<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>[--off]<\/code>&nbsp;disconnects from the current network<\/li>\n\n\n\n<li><code>[--on]<\/code>&nbsp;connects to the last configured network<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-an-access-point\"><span class=\"ez-toc-section\" id=\"Create_An_Access_Point\"><\/span>Create An Access Point<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>t2 ap<\/code>\n<ul class=\"wp-block-list\">\n<li><code>[-n SSID]<\/code>&nbsp;required, creates a network with the given ssid<\/li>\n\n\n\n<li><code>[-p PASS]<\/code>&nbsp;optional for open networks, creates a network with the given password<\/li>\n\n\n\n<li><code>[-s SECURITY]<\/code>&nbsp;creates a network with the given security, valid options:\n<ul class=\"wp-block-list\">\n<li><code>none<\/code>&nbsp;open network, default if no password is given<\/li>\n\n\n\n<li><code>wep<\/code>&nbsp;WEP network, password required<\/li>\n\n\n\n<li><code>psk<\/code>&nbsp;WPA Personal, password required<\/li>\n\n\n\n<li><code>psk2<\/code>&nbsp;WPA2 Personal, reccomended, password required &amp; default if password is given without security<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>[--off]<\/code>&nbsp;turn off the current&nbsp;access point<\/li>\n\n\n\n<li><code>[--on]<\/code>&nbsp;turn on the most recently used&nbsp;access point<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Installation Prerequisites for installation:&nbsp;Node.js&nbsp;4.2.x or greater npm install -g t2-cli Updating Tessel 2 On-board OS\/Firmware How do I know if I need to update my T2? t2-cli&nbsp;and&nbsp;t2-firmware are separately versioned. Updating Simply run&nbsp;t2 update. If you want to update to a specific version, run&nbsp;t2 update -v VERSION_NUM&nbsp;where&nbsp;VERSION_NUM&nbsp;is one of the versions returned by&nbsp;t2 update -l&nbsp;(like&nbsp;t2 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,4],"tags":[],"class_list":["post-9747","post","type-post","status-publish","format-standard","hentry","category-api","category-docs"],"_links":{"self":[{"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/posts\/9747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/comments?post=9747"}],"version-history":[{"count":5,"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/posts\/9747\/revisions"}],"predecessor-version":[{"id":10127,"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/posts\/9747\/revisions\/10127"}],"wp:attachment":[{"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/media?parent=9747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/categories?post=9747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bairesdev.com\/tools\/tessel\/wp-json\/wp\/v2\/tags?post=9747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}