<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nathan Robinson</title>
    <description>The latest articles on DEV Community by Nathan Robinson (@nrobinson2000).</description>
    <link>https://dev.to/nrobinson2000</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F9565%2F22d01cbc-3135-4991-b63a-3ad5e8855522.jpg</url>
      <title>DEV Community: Nathan Robinson</title>
      <link>https://dev.to/nrobinson2000</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nrobinson2000"/>
    <language>en</language>
    <item>
      <title>How to Install Linux Mint on the Razer Blade 15</title>
      <dc:creator>Nathan Robinson</dc:creator>
      <pubDate>Sun, 20 Oct 2019 01:32:51 +0000</pubDate>
      <link>https://dev.to/nrobinson2000/how-to-install-linux-mint-on-the-razer-blade-15-253b</link>
      <guid>https://dev.to/nrobinson2000/how-to-install-linux-mint-on-the-razer-blade-15-253b</guid>
      <description>&lt;p&gt;Originally published at: &lt;a href="https://github.com/nrobinson2000/linux-blade"&gt;https://github.com/nrobinson2000/linux-blade&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Razer Blade 15 is the newest laptop made by Razer. This post will outline the steps I took to install and configure Linux Mint on my Razer Blade 15.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Once you've installed Linux Mint, clone this repository and run the &lt;code&gt;auto-install.sh&lt;/code&gt; script to download and configure my preferred helper tools and settings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install git
git clone https://github.com/nrobinson2000/linux-blade
cd linux-blade
bash auto-install.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Every student at my university receives a laptop as part of their tuition. All students in Computer Science received the &lt;a href="https://www.razer.com/comparisons/blade-15"&gt;Razer Blade 15,&lt;/a&gt; which is overall a good laptop with impressive performance but a shorter battery life than other laptops. It can get hot while gaming but it's not uncomfortable. It works very well as desktop when you attach an external monitor, mouse, and keyboard.&lt;/p&gt;

&lt;p&gt;Naturally, I wanted to see how well the Blade could run Linux. I decided to go with &lt;a href="https://linuxmint.com/"&gt;Linux Mint,&lt;/a&gt; my distro of choice for the last few years.&lt;/p&gt;

&lt;p&gt;Below are the steps to recreate my Linux Mint installation on my Razer Blade 15.&lt;/p&gt;

&lt;p&gt;This tutorial is a work in progress. Follow this tutorial and run the script(s) at your own risk. I take no responsibility for your computer or operating system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 0: Setup the Environment
&lt;/h2&gt;

&lt;p&gt;You will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a Razer Blade 15 Laptop&lt;/li&gt;
&lt;li&gt;a Razer Blade 15 Charger&lt;/li&gt;
&lt;li&gt;a USB Flash Drive&lt;/li&gt;
&lt;li&gt;a Wi-Fi connection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Prepare the USB Flash Drive
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Download the latest Linux Mint release ISO.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use the Cinnamon 64-bit edition.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At the time of writing Linux Mint 19.2 "Tina" is the latest version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can download it here: &lt;a href="https://linuxmint.com/download.php"&gt;https://linuxmint.com/download.php&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Write the ISO the USB Flash Drive
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;If you need to download an ISO writer you can use &lt;a href="https://www.balena.io/etcher/"&gt;Etcher&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Install the Razer BIOS Update (Might not be necessary)
&lt;/h2&gt;

&lt;h4&gt;
  
  
  You will need to update the BIOS on the Blade so the trackpad will work in Linux.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dl.razer.com/drivers/BladeC1/Razer%20Blade%2015%20%282018%29%20BIOS%20update%20v1.05.pdf"&gt;Follow the instructions here to update the BIOS.&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Blade will reboot after the BIOS update so you will need to log back in.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Shrink the Windows Partition
&lt;/h2&gt;

&lt;h4&gt;
  
  
  You will need to shrink the Windows Partition on the Blade to make space for the Linux installation.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;I recommend that you shrink the C: volume by half. Don't do anything with the unallocated space.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.intowindows.com/how-to-shrink-a-volume-or-partition-in-windows-10/"&gt;This guide explains the process of shrinking the C: volume.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4: Boot from the USB Flash Drive
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Shut down the Blade. Press the power button to turn it back on. Choose to boot from the USB Flash Drive in the boot menu (F12).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Blade should boot into Linux Mint.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: Configure Wi-Fi
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Before installing Linux Mint the Blade should be connected to the Internet.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I configured my Blade to connect to the &lt;code&gt;eduroam&lt;/code&gt; network at my university. The steps to do this are below:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open &lt;code&gt;Network Connections&lt;/code&gt; from the start menu.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on the &lt;code&gt;+&lt;/code&gt; on the bottom left and choose to create a &lt;code&gt;Wi-Fi&lt;/code&gt; connection type.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M0-LgwXG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/network1.png"&gt;&lt;/center&gt;

&lt;p&gt; &lt;/p&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1cl8IeFT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/network2.png"&gt;&lt;/center&gt;



&lt;ul&gt;
&lt;li&gt;The Blade should connect to &lt;code&gt;eduroam&lt;/code&gt; automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 6: Install Linux Mint
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run the Linux Mint installer from the desktop. Make sure that you choose to install third-party drivers, and choose to install Linux Mint alongside Windows. The rest of the installation is pretty straightforward.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the installation is complete, you will be prompted to reboot. Remove the installation USB when prompted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When the Blade boots up, you will see Linux Mint as an option, as well as Windows Boot Manager. Select Linux Mint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Log into Linux Mint with the credentials you provided during the installation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 7: Enable right-click, update packages and install the NVIDIA driver
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open Mouse and Touchpad from the menu. On the Touchpad tab, open the drop-down for Click actions. Select "Use multiple fingers for right and middle click".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open Update Manager from the menu (Windows Key), or from the system tray.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At some point, you will be asked to setup Timeshift to configure backups. Enter your password when prompted and click finish to complete the setup wizard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In Update Manager, you will be asked if you would like to switch to local update mirrors. Click OK. Software Sources will open.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on the URL for the Main mirror. Wait several seconds for the fastest mirror to appear and then select it. Do the same with the Base mirror.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click OK to update your APT cache. Close Software Sources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Install Updates and enter your password when prompted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When the updates have completed, open Driver Manager from the menu. Enter your password when prompted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the latest NVIDIA driver and then click Apply Changes. Click Restart to complete the driver change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You have now successfully installed and updated Linux Mint. The following steps are my personal customization choices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I created a script to do most of the following steps automatically. I recommend trying it out. You can download and run it with the following commands:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install git
git clone https://github.com/nrobinson2000/linux-blade
cd linux-blade
bash auto-install.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 8: Install Chromium
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Chromium is the open-source version of Chrome. You can install by entering the following in a terminal:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install chromium-browser
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I recommend opening this article in chromium so you can copy the rest of the commands to install additional software more easily. (When pasting into the terminal you must use SHIFT-CONTROL-V instead of just CONTROL-V.)&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 9: Install openrazer and polychromatic
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Installing these tools will allow you to control the keyboard RGB patterns much like Razer Synapse on Windows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At some point, you will be asked to set a password to enable secure boot. Choose &lt;code&gt;12345678&lt;/code&gt; since it's easy to remember. You will need to enter this password the next time you boot when you select Enroll MOK to enable secure boot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the following commands in terminal to install:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo add-apt-repository ppa:openrazer/stable
sudo add-apt-repository ppa:polychromatic/stable

sudo apt update

sudo apt install openrazer-meta polychromatic
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 10: Install the Adapta theme and the numix icon theme
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Adapta-Nokto-Eta theme is my favorite UI theme. Numix-Circle-Light is my favorite icon theme.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the following commands in terminal to install:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo add-apt-repository ppa:numix/ppa
sudo add-apt-repository ppa:tista/adapta

sudo apt update

sudo apt install numix-icon-theme-circle adapta-gtk-theme
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Once you've installed the themes, open the Themes app from the menu. Select the following themes:&lt;/li&gt;
&lt;/ul&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tle83Rlr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/themes.png"&gt;&lt;/center&gt;
&lt;h2&gt;
  
  
  Step 11: Modify the panel and install docky
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I like having the panel at the top of the screen and a dock at the bottom, much like macOS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To move the panel to the top of the screen, right-click the panel, click "Modify Panel", and then click "Move Panel". Click the top of the screen when it is highlighted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Docky is a great dock application that provides a dock similar to macOS. You can install it with:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install docky
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Start docky from the menu. Right-click on the docky icon on the far left of the dock and click Settings. Apply the following settings:&lt;/li&gt;
&lt;/ul&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x9XnOc2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/docky.png"&gt;&lt;/center&gt;
&lt;h2&gt;
  
  
  Step 12: Install comfortable-swipe
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;I like having gestures to switch between workspaces. Luckily this can be achieved with comfortable-swipe, which provides three-finger and four-finger gestures for switching workspaces and moving windows between workspaces.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install git libinput-tools libxdo-dev g++
git clone https://github.com/Hikari9/comfortable-swipe.git --depth 1

cd comfortable-swipe
bash install

sudo gpasswd -a $USER $(ls -l /dev/input/event* | awk '{print $4}' | head --line=1)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you'd like to use my configuration you can copy it from here:&lt;br&gt;
&lt;a href="https://raw.githubusercontent.com/nrobinson2000/linux-blade/master/config/comfortable-swipe.conf"&gt;https://raw.githubusercontent.com/nrobinson2000/linux-blade/master/config/comfortable-swipe.conf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To open the configuration file you can run:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;xed $(comfortable-swipe config)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;The swipe gestures won't be enabled until you reboot or log out and log back in.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 13: Install and configure conky
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Conky is a program that provides a configurable system monitor that will appear on your desktop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can install conky with:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install conky
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Next, I suggest using my conky configuration. It will display the time, date, CPU and RAM usage, top processes, SSD usage, temperatures, and battery information. You can copy it from here: &lt;a href="https://raw.githubusercontent.com/nrobinson2000/linux-blade/master/config/conkyrc"&gt;https://raw.githubusercontent.com/nrobinson2000/linux-blade/master/config/conkyrc&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create your conky configuration file with:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;xed ~/.conkyrc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;And paste in my configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can start conky by running &lt;code&gt;conky&lt;/code&gt; from the terminal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I would highly suggest adding conky to Startup Applications. Click the plus and then select "Custom command".&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kghszxEA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/conky.png"&gt;&lt;/center&gt;

&lt;ul&gt;
&lt;li&gt;I'd also suggest adding Docky if it isn't there already. (Plus, "Choose application", Docky).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 14: Install Eclipse
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Eclipse is required for most Computer Science classes where we write Java code at my university.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the installer from &lt;a href="https://www.eclipse.org/downloads/"&gt;https://www.eclipse.org/downloads/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extract the tar.gz to Downloads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the &lt;code&gt;eclipse-inst&lt;/code&gt; program in the &lt;code&gt;eclipse-installer&lt;/code&gt; directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose "Eclipse IDE for Java Developers".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proceed with the rest of the installation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 15: Install Wireshark
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wireshark is required for the Network Programming class at my university.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install wireshark*
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;When asked if non-superusers should be able to capture packets, select &lt;code&gt;&amp;lt;Yes&amp;gt;&lt;/code&gt;with the arrow keys and press enter.&lt;/p&gt;

&lt;p&gt;Add yourself to the &lt;code&gt;wireshark&lt;/code&gt; group with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo adduser $USER wireshark
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;You will need to logout and log back in for Wireshark to work properly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope this tutorial has helped you successfully install Linux Mint on your Razer Blade, making it arguably much more productive and pleasant than using Windows. Feel free to customize further if you find it necessary. If you have any questions or concerns please feel free to email me: &lt;a href="mailto:nrobinson2000@me.com"&gt;nrobinson2000@me.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Programs
&lt;/h2&gt;

&lt;p&gt;Here are some more programs that I use on a regular basis in no particular order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.particle.io/workbench/"&gt;Particle Workbench&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getmailspring.com/"&gt;Mailspring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.com/"&gt;Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discordapp.com/"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gitkraken.com/"&gt;GitKraken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.saleae.com/downloads/"&gt;Saleae Logic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://store.digilentinc.com/waveforms-previously-waveforms-2015/"&gt;Digilent Waveforms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jetbrains.com/idea/"&gt;IntelliJ IDEA Ultimate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.arduino.cc/en/Main/Software"&gt;Arduino IDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fritzing.org/download/"&gt;Fritzing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Screenshot
&lt;/h2&gt;

&lt;p&gt;Here is a screenshot of my desktop to help you get a general idea of how my settings look.&lt;/p&gt;



&lt;center&gt;
&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4mi9tLsm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/desktop2.png"&gt;&lt;center&gt;
&lt;br&gt;
&lt;/center&gt;
&lt;br&gt;
&lt;/center&gt;

</description>
    </item>
    <item>
      <title>How to Install Linux Mint on the Razer Blade 15 (WIP)</title>
      <dc:creator>Nathan Robinson</dc:creator>
      <pubDate>Tue, 10 Sep 2019 01:35:19 +0000</pubDate>
      <link>https://dev.to/nrobinson2000/how-to-install-linux-mint-on-the-razer-blade-15-wip-22gb</link>
      <guid>https://dev.to/nrobinson2000/how-to-install-linux-mint-on-the-razer-blade-15-wip-22gb</guid>
      <description>&lt;p&gt;Originally published at: &lt;a href="https://github.com/nrobinson2000/linux-blade"&gt;https://github.com/nrobinson2000/linux-blade&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Razer Blade 15 is the newest laptop made by Razer. This post will outline the steps I took to install and configure Linux Mint on my Razer Blade 15.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Once you've installed Linux Mint, clone this repository and run the &lt;code&gt;auto-install.sh&lt;/code&gt; script to download and configure my preferred helper tools and settings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install git
git clone https://github.com/nrobinson2000/linux-blade
cd linux-blade
bash auto-install.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Every student at my university receives a laptop as part of their tuition. All students in Computer Science received the &lt;a href="https://www.razer.com/comparisons/blade-15"&gt;Razer Blade 15,&lt;/a&gt; which is overall a good laptop with impressive performance but a shorter battery life than other laptops. It can get hot while gaming but it's not uncomfortable. It works very well as desktop when you attach an external monitor, mouse, and keyboard.&lt;/p&gt;

&lt;p&gt;Naturally, I wanted to see how well the Blade could run Linux. I decided to go with &lt;a href="https://linuxmint.com/"&gt;Linux Mint,&lt;/a&gt; my distro of choice for the last few years.&lt;/p&gt;

&lt;p&gt;Below are the steps to recreate my Linux Mint installation on my Razer Blade 15.&lt;/p&gt;

&lt;p&gt;This tutorial is a work in progress. Follow this tutorial and run the script(s) at your own risk. I take no responsibility for your computer or operating system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 0: Setup the Environment
&lt;/h2&gt;

&lt;p&gt;You will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a Razer Blade 15 Laptop&lt;/li&gt;
&lt;li&gt;a Razer Blade 15 Charger&lt;/li&gt;
&lt;li&gt;a USB Flash Drive&lt;/li&gt;
&lt;li&gt;a Wi-Fi connection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Prepare the USB Flash Drive
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Download the latest Linux Mint release ISO.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use the Cinnamon 64-bit edition.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At the time of writing Linux Mint 19.2 "Tina" is the latest version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can download it here: &lt;a href="https://linuxmint.com/download.php"&gt;https://linuxmint.com/download.php&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Write the ISO the USB Flash Drive
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;If you need to download an ISO writer you can use &lt;a href="https://www.balena.io/etcher/"&gt;Etcher&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Install the Razer BIOS Update (Might not be necessary)
&lt;/h2&gt;

&lt;h4&gt;
  
  
  You will need to update the BIOS on the Blade so the trackpad will work in Linux.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dl.razer.com/drivers/BladeC1/Razer%20Blade%2015%20%282018%29%20BIOS%20update%20v1.05.pdf"&gt;Follow the instructions here to update the BIOS.&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Blade will reboot after the BIOS update so you will need to log back in.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Shrink the Windows Partition
&lt;/h2&gt;

&lt;h4&gt;
  
  
  You will need to shrink the Windows Partition on the Blade to make space for the Linux installation.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;I recommend that you shrink the C: volume by half. Don't do anything with the unallocated space.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.intowindows.com/how-to-shrink-a-volume-or-partition-in-windows-10/"&gt;This guide explains the process of shrinking the C: volume.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4: Boot from the USB Flash Drive
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Shut down the Blade. Press the power button to turn it back on. Choose to boot from the USB Flash Drive in the boot menu (F12).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Blade should boot into Linux Mint.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: Configure Wi-Fi
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Before installing Linux Mint the Blade should be connected to the Internet.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I configured my Blade to connect to the &lt;code&gt;eduroam&lt;/code&gt; network at my university. The steps to do this are below:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open &lt;code&gt;Network Connections&lt;/code&gt; from the start menu.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on the &lt;code&gt;+&lt;/code&gt; on the bottom left and choose to create a &lt;code&gt;Wi-Fi&lt;/code&gt; connection type.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M0-LgwXG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/network1.png"&gt;&lt;/center&gt;

&lt;p&gt; &lt;/p&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1cl8IeFT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/network2.png"&gt;&lt;/center&gt;



&lt;ul&gt;
&lt;li&gt;The Blade should connect to &lt;code&gt;eduroam&lt;/code&gt; automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 6: Install Linux Mint
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run the Linux Mint installer from the desktop. Make sure that you choose to install third-party drivers, and choose to install Linux Mint alongside Windows. The rest of the installation is pretty straightforward.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the installation is complete, you will be prompted to reboot. Remove the installation USB when prompted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When the Blade boots up, you will see Linux Mint as an option, as well as Windows Boot Manager. Select Linux Mint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Log into Linux Mint with the credentials you provided during the installation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 7: Enable right-click, update packages and install the NVIDIA driver
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open Mouse and Touchpad from the menu. On the Touchpad tab, open the drop-down for Click actions. Select "Use multiple fingers for right and middle click".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open Update Manager from the menu (Windows Key), or from the system tray.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At some point, you will be asked to setup Timeshift to configure backups. Enter your password when prompted and click finish to complete the setup wizard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In Update Manager, you will be asked if you would like to switch to local update mirrors. Click OK. Software Sources will open.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on the URL for the Main mirror. Wait several seconds for the fastest mirror to appear and then select it. Do the same with the Base mirror.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click OK to update your APT cache. Close Software Sources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Install Updates and enter your password when prompted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When the updates have completed, open Driver Manager from the menu. Enter your password when prompted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the latest NVIDIA driver and then click Apply Changes. Click Restart to complete the driver change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You have now successfully installed and updated Linux Mint. The following steps are my personal customization choices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I created a script to do most of the following steps automatically. I recommend trying it out. You can download and run it with the following commands:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install git
git clone https://github.com/nrobinson2000/linux-blade
cd linux-blade
bash auto-install.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 8: Install Chromium
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Chromium is the open-source version of Chrome. You can install by entering the following in a terminal:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install chromium-browser
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I recommend opening this article in chromium so you can copy the rest of the commands to install additional software more easily. (When pasting into the terminal you must use SHIFT-CONTROL-V instead of just CONTROL-V.)&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 9: Install openrazer and polychromatic
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Installing these tools will allow you to control the keyboard RGB patterns much like Razer Synapse on Windows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At some point, you will be asked to set a password to enable secure boot. Choose &lt;code&gt;12345678&lt;/code&gt; since it's easy to remember. You will need to enter this password the next time you boot when you select Enroll MOK to enable secure boot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the following commands in terminal to install:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo add-apt-repository ppa:openrazer/stable
sudo add-apt-repository ppa:polychromatic/stable

sudo apt update

sudo apt install openrazer-meta polychromatic
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 10: Install the Adapta theme and the numix icon theme
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Adapta-Nokto-Eta theme is my favorite UI theme. Numix-Circle-Light is my favorite icon theme.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the following commands in terminal to install:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo add-apt-repository ppa:numix/ppa
sudo add-apt-repository ppa:tista/adapta

sudo apt update

sudo apt install numix-icon-theme-circle adapta-gtk-theme
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Once you've installed the themes, open the Themes app from the menu. Select the following themes:&lt;/li&gt;
&lt;/ul&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tle83Rlr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/themes.png"&gt;&lt;/center&gt;
&lt;h2&gt;
  
  
  Step 11: Modify the panel and install docky
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I like having the panel at the top of the screen and a dock at the bottom, much like macOS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To move the panel to the top of the screen, right-click the panel, click "Modify Panel", and then click "Move Panel". Click the top of the screen when it is highlighted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Docky is a great dock application that provides a dock similar to macOS. You can install it with:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install docky
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Start docky from the menu. Right-click on the docky icon on the far left of the dock and click Settings. Apply the following settings:&lt;/li&gt;
&lt;/ul&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x9XnOc2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/docky.png"&gt;&lt;/center&gt;
&lt;h2&gt;
  
  
  Step 12: Install comfortable-swipe
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;I like having gestures to switch between workspaces. Luckily this can be achieved with comfortable-swipe, which provides three-finger and four-finger gestures for switching workspaces and moving windows between workspaces.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install git libinput-tools libxdo-dev g++
git clone https://github.com/Hikari9/comfortable-swipe.git --depth 1

cd comfortable-swipe
bash install

sudo gpasswd -a $USER $(ls -l /dev/input/event* | awk '{print $4}' | head --line=1)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you'd like to use my configuration you can copy it from here:&lt;br&gt;
&lt;a href="https://raw.githubusercontent.com/nrobinson2000/linux-blade/master/config/comfortable-swipe.conf"&gt;https://raw.githubusercontent.com/nrobinson2000/linux-blade/master/config/comfortable-swipe.conf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To open the configuration file you can run:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;xed $(comfortable-swipe config)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;The swipe gestures won't be enabled until you reboot or log out and log back in.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 13: Install and configure conky
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Conky is a program that provides a configurable system monitor that will appear on your desktop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can install conky with:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install conky
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Next, I suggest using my conky configuration. It will display the time, date, CPU and RAM usage, top processes, SSD usage, temperatures, and battery information. You can copy it from here: &lt;a href="https://raw.githubusercontent.com/nrobinson2000/linux-blade/master/config/conkyrc"&gt;https://raw.githubusercontent.com/nrobinson2000/linux-blade/master/config/conkyrc&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create your conky configuration file with:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;xed ~/.conkyrc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;And paste in my configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can start conky by running &lt;code&gt;conky&lt;/code&gt; from the terminal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I would highly suggest adding conky to Startup Applications. Click the plus and then select "Custom command".&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;center&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kghszxEA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/conky.png"&gt;&lt;/center&gt;

&lt;ul&gt;
&lt;li&gt;I'd also suggest adding Docky if it isn't there already. (Plus, "Choose application", Docky).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 14: Install Eclipse
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Eclipse is required for most Computer Science classes where we write Java code at my university.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the installer from &lt;a href="https://www.eclipse.org/downloads/"&gt;https://www.eclipse.org/downloads/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extract the tar.gz to Downloads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the &lt;code&gt;eclipse-inst&lt;/code&gt; program in the &lt;code&gt;eclipse-installer&lt;/code&gt; directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose "Eclipse IDE for Java Developers".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proceed with the rest of the installation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 15: Install Wireshark
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wireshark is required for the Network Programming class at my university.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install wireshark*
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;When asked if non-superusers should be able to capture packets, select &lt;code&gt;&amp;lt;Yes&amp;gt;&lt;/code&gt;with the arrow keys and press enter.&lt;/p&gt;

&lt;p&gt;Add yourself to the &lt;code&gt;wireshark&lt;/code&gt; group with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo adduser $USER wireshark
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;You will need to logout and log back in for Wireshark to work properly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope this tutorial has helped you successfully install Linux Mint on your Razer Blade, making it arguably much more productive and pleasant than using Windows. Feel free to customize further if you find it necessary. If you have any questions or concerns please feel free to email me: &lt;a href="mailto:nrobinson2000@me.com"&gt;nrobinson2000@me.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Programs
&lt;/h2&gt;

&lt;p&gt;Here are some more programs that I use on a regular basis in no particular order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.particle.io/workbench/"&gt;Particle Workbench&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getmailspring.com/"&gt;Mailspring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.com/"&gt;Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discordapp.com/"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gitkraken.com/"&gt;GitKraken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.saleae.com/downloads/"&gt;Saleae Logic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://store.digilentinc.com/waveforms-previously-waveforms-2015/"&gt;Digilent Waveforms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jetbrains.com/idea/"&gt;IntelliJ IDEA Ultimate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.arduino.cc/en/Main/Software"&gt;Arduino IDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fritzing.org/download/"&gt;Fritzing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Screenshot
&lt;/h2&gt;

&lt;p&gt;Here is a screenshot of my desktop to help you get a general idea of how my settings look.&lt;/p&gt;



&lt;center&gt;
&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4mi9tLsm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/nrobinson2000/linux-blade/raw/master/images/desktop2.png"&gt;&lt;center&gt;
&lt;br&gt;
&lt;/center&gt;
&lt;br&gt;
&lt;/center&gt;

</description>
    </item>
    <item>
      <title>Why you need Terminal</title>
      <dc:creator>Nathan Robinson</dc:creator>
      <pubDate>Thu, 12 Oct 2017 12:38:41 +0000</pubDate>
      <link>https://dev.to/nrobinson2000/why-you-need-terminal-bpd</link>
      <guid>https://dev.to/nrobinson2000/why-you-need-terminal-bpd</guid>
      <description>&lt;center&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fd33wubrfki0l68.cloudfront.net%2Fd9e214122dec49e912f8632854f33d1569866d01%2Fb5013%2Fimages%2Fterminal%2Ftitle.png" width="800" height="557"&gt;&lt;/center&gt;

&lt;p&gt;&lt;strong&gt;The Terminal,&lt;/strong&gt; also known as the command line or a Terminal emulator, is an essential component of any useful operating system. It is by far one of the most important applications on Mac and Linux. The Terminal provides an efficient interface to access the true power of a computer better than any graphical interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When opening a terminal&lt;/strong&gt; you are presented with a shell. On Mac and Linux this shell is Bash, but other shells can be used. (I'll be using Terminal and Bash interchangeably from now on.)&lt;/p&gt;



&lt;center&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fd33wubrfki0l68.cloudfront.net%2Fd135e1b945518a7a8599e146d119cbae1076845d%2F78b02%2Fimages%2Fterminal%2Fbash.svg" width="375" height="158"&gt;&lt;/center&gt;



&lt;p&gt;&lt;strong&gt;The interactive prompt&lt;/strong&gt; is one of the primary methods of using a shell. The most convenient feature of a shell is that it operates with a working directory, which means you can navigate your file system and the shell will keep track of where you are. Bash can create directories (folders) and files with ease, and it is more straightforward than using a graphical file manager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can use Bash to&lt;/strong&gt; run many programs and execute many many files. Often executable files are called commands. Commands can take input in the form of arguments or interactively, and can perform operations and print output. Bash is powerful because of the methods it has to link and chain commands together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bash is also&lt;/strong&gt; a scripting language, which means you can create executable files called scripts that can run multiple commands, support control structures, variables and much more. Scripts are useful for automating processes or creating an easy way to perform many tasks with a single command.&lt;/p&gt;

&lt;center&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fd33wubrfki0l68.cloudfront.net%2F8c67f1a831436d7559b185f719d974d1c8d43b23%2F41344%2Fimages%2Fterminal%2Fbashrc.png" width="800" height="557"&gt;&lt;/center&gt;

&lt;p&gt;&lt;strong&gt;Bash can be used&lt;/strong&gt; to do amazing things but at the cost of responsibility. If you command it to do an undesired command sequence it will proceed and execute without hesitation, which may lead to unintentional or damaging effects. When using Bash you are executing the power you have over the computer. Use Bash responsibly, and if you are unsure what something does, don't paste it into your terminal. Be smart and google it, or read the manual for the command. &lt;strong&gt;Use caution. The last thing you want to do is compromise your computer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Terminal is a tool,&lt;/strong&gt; not an application, meaning that it can be regarded as a lifestyle. I always have a terminal or two open in the directory of a project. I navigate to the project in a terminal, and then use the terminal to launch graphical applications with the project as the current directory. This is much quicker and less cumbersome than the reverse, which can take much longer. Imagine the time that is wasted and the clicks that are used to open a graphical code editor, click File-&amp;gt;Open, navigate to the project, click Open, wait for the folder to be opened, and then finally open a terminal and jump to the project directory so you can run your code. With my method, I can run &lt;code&gt;atom .&lt;/code&gt; in my terminal to launch &lt;a href="https://atom.io" rel="noopener noreferrer"&gt;Atom&lt;/a&gt;. My terminal remains in the background, and I can come back to it to run the code and debug.&lt;/p&gt;

&lt;center&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fd33wubrfki0l68.cloudfront.net%2F7eaf5b1e2c64bb9c09c5770763d7a393bf05bd2d%2Fc0058%2Fimages%2Fterminal%2Fatom_1200px.png" width="800" height="440"&gt;&lt;/center&gt;
&lt;br&gt;

**Terminal fluency** is an essential skill that no developer should go without. Using a computer without using terminal is like driving a car without using the steering wheel. (I hate it when people use vehicles to make computer analogies but they're an efficient way to get a point across.) Every developer should take the time to familiarize themself with terminal if they haven't done so already, as it is a truly rewarding skill. You'll amaze yourself with what you can achieve and the time you can save by creating scripts and commands to automate or expedite tasks in your workflow.

**Using terminal** puts you in full control of your computer and your workflow, and I highly recommend using it whenever possible. I use it every day and I love it.

---------

## Why Bash is important to me

&lt;center&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fd33wubrfki0l68.cloudfront.net%2Fd304870ee3304dc1a92d11d83c82a1793bcdaf64%2F7d65b%2Fimages%2Fterminal%2Fpo.png" width="800" height="400"&gt;&lt;/center&gt;

&lt;p&gt;My most popular open source project is a Bash script, and has over 70 unique users. It's called po-util, and provides an easy method for installing and using the &lt;a href="https://github.com/spark/firmware/" rel="noopener noreferrer"&gt;local Particle toolchain&lt;/a&gt; to compile code for Particle's entire suite of &lt;a href="https://www.particle.io/products/hardware/photon-wifi-dev-kit" rel="noopener noreferrer"&gt;Wi-Fi&lt;/a&gt;, and &lt;a href="https://www.particle.io/products/hardware/electron-cellular-dev-kit" rel="noopener noreferrer"&gt;cellular&lt;/a&gt; IoT development boards. It includes many features for project, library, and device management, and can be installed on Mac and Linux by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bash &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;curl &lt;span class="nt"&gt;-sL&lt;/span&gt; master.po-util.com/install&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check it out on &lt;a href="https://github.com/nrobinson2000/po-util" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, or on &lt;a href="https://po-util.com" rel="noopener noreferrer"&gt;po-util.com&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://blog.nrobinson2000.me/2017/10/08/why-you-need-terminal" rel="noopener noreferrer"&gt;Originally Published on my Blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More about me: &lt;a href="https://nrobinson2000.me" rel="noopener noreferrer"&gt;nrobinson2000.me&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>terminal</category>
      <category>github</category>
    </item>
    <item>
      <title>How to develop Particle locally using po-util</title>
      <dc:creator>Nathan Robinson</dc:creator>
      <pubDate>Sat, 01 Apr 2017 18:46:44 +0000</pubDate>
      <link>https://dev.to/nrobinson2000/how-to-develop-particle-locally-using-po-util</link>
      <guid>https://dev.to/nrobinson2000/how-to-develop-particle-locally-using-po-util</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Particle Web IDE, Particle Dev, and particle-cli are not the only ways to program Particle devices.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6U86s6cr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cehs.github.io/images/po-util-updated.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6U86s6cr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cehs.github.io/images/po-util-updated.svg"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What is po-util?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/nrobinson2000/po-util"&gt;Po-util&lt;/a&gt;, short for Particle Offline Utility, is a tool I maintain for facilitating the ultimate local Particle development experience. Po-util takes the hassle out of developing Particle projects locally by eliminating the need to use the Particle cloud to build your firmware.&lt;/p&gt;

&lt;p&gt;Po-util is my personal solution to local Particle development that uses the GCC for ARM Cortex processors toolchain to build your projects using the &lt;a href="https://github.com/spark/firmware"&gt;Particle Firmware Source&lt;/a&gt; directly on your computer.&lt;/p&gt;

&lt;p&gt;Po-util is a bash shell script that is available on GitHub for &lt;a href="https://github.com/nrobinson2000/po-util"&gt;Linux&lt;/a&gt; and &lt;a href="https://github.com/nrobinson2000/homebrew-po"&gt;macOS&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features of po-util
&lt;/h2&gt;

&lt;p&gt;There are many more features to po-util than aliasing a few &lt;code&gt;make&lt;/code&gt; commands.  Po-util is unique workflow I meticulously developed so that others can experience local Particle development the way it was meant to be.&lt;/p&gt;

&lt;h4&gt;
  
  
  Po-util offers many features, including:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Full installation of required dependencies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for building firmware for the Particle Photon, Electron, P1, Core, Raspberry Pi, and Redbear Duo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Instant" firmware uploading over USB using DFU Utilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sequential Over The Air firmware uploading to multiple devices in a "product".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A unified project structure that is cross-compatible between the Linux and macOS editions of po-util.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An efficient library manager that works with libraries from Particle Libraries 2.0 or GitHub.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A range of keyboard shortcuts to expedite development within &lt;a href="https://atom.io"&gt;Atom&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting started with po-util
&lt;/h2&gt;

&lt;p&gt;Installing and using po-util is a rewarding experience.  (You must be an administrator on your computer however.)&lt;/p&gt;

&lt;p&gt;For Linux Distributions based on Debian, Red Hat, or Arch, you can run the following in your Terminal to install po-util:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bash &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt; curl &lt;span class="nt"&gt;-sL&lt;/span&gt; https://git.io/vX4cl &lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On macOS, you can install po-util using &lt;a href="https://brew.sh"&gt;Homebrew&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;brew tap nrobinson2000/po
&lt;span class="nv"&gt;$ &lt;/span&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;po
&lt;span class="nv"&gt;$ &lt;/span&gt;po &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating a project with po-util
&lt;/h2&gt;

&lt;p&gt;To use po-util, you must work in an initialized project directory. (More on project structure below.)&lt;/p&gt;

&lt;p&gt;To create a project simply run the following in your Terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po init photon newProject
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command creates the &lt;code&gt;newProject&lt;/code&gt; folder and creates the appropriate folders and files inside.  The &lt;a href="https://atom.io"&gt;Atom&lt;/a&gt; shortcuts file is set to build firmware for the Particle Photon. (You can substitute &lt;code&gt;photon&lt;/code&gt; with &lt;code&gt;electron&lt;/code&gt;, &lt;code&gt;P1&lt;/code&gt;, &lt;code&gt;core&lt;/code&gt;, &lt;code&gt;pi&lt;/code&gt;, or &lt;code&gt;duo&lt;/code&gt; to initialize the project for other devices.)&lt;/p&gt;

&lt;p&gt;To make use of the shortcuts you will need the &lt;a href="https://atom.io/packages/build"&gt;Atom Build package&lt;/a&gt;.  You can easily the package and a couple other recommended ones with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po setup-atom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Po-util project structure
&lt;/h2&gt;

&lt;p&gt;Po-util operates by keeping your code separated into projects that follow an organized structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;firmware/
└ main.cpp

bin/
└ firmware.bin

devices.txt
libs.txt
.atom-build.yml
README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All source code goes in &lt;code&gt;firmware/&lt;/code&gt;, and the compiled binary is saved as &lt;code&gt;bin/firmware.bin&lt;/code&gt;. You can specify devices to flash sequentially to in &lt;code&gt;devices.txt&lt;/code&gt;, and &lt;code&gt;libs.txt&lt;/code&gt; is how po-util keeps track of what libraries to use in the project.&lt;/p&gt;

&lt;p&gt;Po-util supports build shortcuts for &lt;a href="https://atom.io"&gt;Atom&lt;/a&gt;, and these are set in &lt;code&gt;.atom-build.yml&lt;/code&gt; should you need to modify it on a per-project basis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using po-util with Atom
&lt;/h2&gt;

&lt;p&gt;Now that you have created a project and installed the recommended packages, open the project folder in Atom.&lt;/p&gt;

&lt;p&gt;On the left, you should find your &lt;code&gt;firmware/main.cpp&lt;/code&gt; file.  This is where you should keep most of your code.  (You can use separate files and libraries however, but the majority of your code should be kept here.)&lt;/p&gt;

&lt;p&gt;When your project is initialized, you will find the following dummy code in your &lt;code&gt;firmware/main.cpp&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include "Particle.h"
&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c1"&gt;// Put setup code here to run once&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c1"&gt;// Put code here to loop forever&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is where you can observe one of the most useful features of po-util, the keyboard shortcuts for Atom.  If you press &lt;code&gt;Ctrl + Alt + 1&lt;/code&gt;, Atom will build the project by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po photon build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pressing &lt;code&gt;Ctrl + Alt + 2&lt;/code&gt; builds the firmware and flashes it to your device over USB using DFU Utilities by running the following, which can also be done from your Terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po photon flash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If you prototype rapidly like I do, flashing will become a frequently used shortcut.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pressing &lt;code&gt;Ctrl + Alt + 3&lt;/code&gt; cleans the firmware and removes the &lt;code&gt;bin/&lt;/code&gt; directory by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po photon clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pressing &lt;code&gt;Ctrl + Alt + 4&lt;/code&gt; uploads firmware to your device without rebuilding by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po photon dfu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pressing &lt;code&gt;Ctrl + Alt + 5&lt;/code&gt; uploads your firmware Over The Air to any devices listed in your &lt;code&gt;devices.txt&lt;/code&gt; by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po photon ota &lt;span class="nt"&gt;--multi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuring your devices to work with po-util
&lt;/h2&gt;

&lt;p&gt;All devices that po-util will use DFU Utilities to upload firmware to must have their firmware patched/upgraded in order to allow po-util to automatically put them into DFU mode.  To do so, &lt;a href="https://docs.particle.io/guide/getting-started/modes/photon/#dfu-mode-device-firmware-upgrade-"&gt;manually put your device into DFU mode&lt;/a&gt; and run the following to update the system firmware on your device:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po photon update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;By default, all Particle devices will go into DFU mode when the computer they are connected to sets the serial baud rate to &lt;code&gt;14400&lt;/code&gt;.  However, on Linux, baud rates can not be set to an arbitrary value like &lt;code&gt;14400&lt;/code&gt;.  Po-util solves this caveat by using &lt;code&gt;19200&lt;/code&gt; as the baud rate to put the device into DFU mode.  If you wish, you can use &lt;code&gt;14400&lt;/code&gt; on macOS by running &lt;code&gt;$ po config&lt;/code&gt; and choosing &lt;code&gt;default&lt;/code&gt; when prompted for a baud rate.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Using Particle libraries with po-util
&lt;/h2&gt;

&lt;p&gt;One of the greatest features of po-util is its flexible library manager.  The library manager not only allows using libraries from Particle's list of libraries, but it also supports using any library that is available from GitHub.&lt;/p&gt;

&lt;p&gt;A library can be downloaded and added to a project by using the &lt;code&gt;$ po lib get&lt;/code&gt; and &lt;code&gt;$ po lib add&lt;/code&gt; commands. For example, you could add the &lt;code&gt;neopixel&lt;/code&gt; library to a project with the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po lib get neopixel
&lt;span class="nv"&gt;$ &lt;/span&gt;po lib add neopixel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You could go even further and load an example from the &lt;code&gt;neopixel&lt;/code&gt; library.&lt;/p&gt;

&lt;p&gt;First, check what examples are available with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po lib ex &lt;span class="nb"&gt;ls &lt;/span&gt;neopixel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command above returns the following, indicating there are examples available:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Found the following neopixel examples:

a-rainbow, extra-examples, rgbw-strandtest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To load the &lt;code&gt;extra-examples&lt;/code&gt; example into your project run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po lib ex load neopixel extra-examples
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Sharing a po-util project
&lt;/h2&gt;

&lt;p&gt;The most practical way to share a po-util project is to upload it to GitHub, as your project is initialized as a git repository and set up to use &lt;a href="https://travis-ci.org/"&gt;Travis CI&lt;/a&gt; for testing.&lt;/p&gt;

&lt;p&gt;Po-util provides another method if you want a "quick and dirty" way to share your code so that it can be built without using po-util. Using &lt;code&gt;$ po lib pack&lt;/code&gt;, you can create a copy of your &lt;code&gt;firmware/&lt;/code&gt; directory with all symbolic links and libraries packaged inside.  A tar.gz archive is created as well.&lt;/p&gt;

&lt;p&gt;When using publicly accessible libraries it is advised that you clean the binaries and libraries from your project.  This removes the symbolic links from your &lt;code&gt;firmware&lt;/code&gt; directory, but leaves the libraries your project depends on in your &lt;code&gt;libs.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To clean your project run the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po lib clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At any time, you can re-download and add the libraries using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;po lib setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If you are sharing using GitHub and Travis CI, cleaning is not necessary, as Travis CI will do it for you.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  More po-util information
&lt;/h2&gt;

&lt;p&gt;For more information about po-util, read the man page with &lt;code&gt;$ man po&lt;/code&gt;, check out &lt;a href="https://nrobinson2000.github.io/po-util/"&gt;the website&lt;/a&gt;, or consult the &lt;a href="https://github.com/nrobinson2000/po-util"&gt;repository on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Stars, Feedback, Contributions and Donations are greatly appreciated.  I hope you enjoy using po-util as much as I have enjoyed creating it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/nrobinson2000/po-util"&gt;Linux Edition Repo&lt;/a&gt; - &lt;a href="https://github.com/nrobinson2000/homebrew-po"&gt;macOS Edition Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://www.paypal.me/nrobinson2000"&gt;Donate with Paypal&lt;/a&gt; - &lt;a href="http://nrobinson2000.github.io/donate-bitcoin/?currency=USD"&gt;Donate with Bitcoin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cehs.github.io/2017/03/31/how-to-develop-locally-using-po-util.html"&gt;Originally published on my Blog&lt;/a&gt; - &lt;a href="https://cehs.github.io/develop-with-po-util.pdf"&gt;Download PDF&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to run Particle on Raspberry Pi</title>
      <dc:creator>Nathan Robinson</dc:creator>
      <pubDate>Sat, 11 Mar 2017 21:58:51 +0000</pubDate>
      <link>https://dev.to/nrobinson2000/how-to-run-particle-on-raspberry-pi</link>
      <guid>https://dev.to/nrobinson2000/how-to-run-particle-on-raspberry-pi</guid>
      <description>

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Use the most popular single-board computer with the most popular IoT tools.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;center&gt;
&lt;br&gt;
  &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XZ3X05fe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cehs.github.io/images/Particle-Pi.png"&gt;&lt;br&gt;
&lt;/center&gt;
&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In October of 2016 Particle announced that they would add support for Raspberry Pi on their IoT cloud platform. I was in the first community focus group and was one their alpha testers. Now that Particle has publicly announced their support for Raspberry Pi, anyone can sign up for the &lt;a href="https://www.particle.io/products/development-tools/raspberry-pi-on-particle"&gt;Open Beta&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Particle on Raspberry Pi allows you to bring the features of the Particle Cloud to the full features of Raspberry Pi and create amazing projects that could not have been easily created previously.&lt;/p&gt;

&lt;p&gt;With Particle on Raspberry Pi, you can use the same C++ code for Particle's other devices to create powerful solutions.&lt;/p&gt;

&lt;p&gt;Particle on Raspberry Pi provides complete access to the forty IO pins on Raspberry Pi, allowing you to do digital and analog interactions with your favorite electronics. Additionally, Particle on Raspberry Pi allows you to create functions for calling virtually any Bash command or script present on Raspberry Pi, facilitating dynamic, flexible interaction from within firmware.&lt;/p&gt;

&lt;p&gt;Currently, Particle on Raspberry Pi is optimized for the &lt;a href="https://www.raspberrypi.org/products/raspberry-pi-3-model-b/"&gt;Raspberry Pi 3&lt;/a&gt;, the &lt;a href="https://www.raspberrypi.org/products/raspberry-pi-2-model-b/"&gt;Raspberry Pi 2&lt;/a&gt;, the &lt;a href="https://www.raspberrypi.org/products/pi-zero/"&gt;Raspberry Pi Zero&lt;/a&gt;, the &lt;a href="https://www.raspberrypi.org/products/model-b-plus/"&gt;Raspberry Pi B+&lt;/a&gt;, and the newly released &lt;a href="https://www.raspberrypi.org/products/pi-zero-wireless/"&gt;Raspberry Pi Zero Wireless&lt;/a&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Basic Setup
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Read below for full setup.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first step is to make sure your Raspberry Pi is updated to the latest version of Raspbian Jessie and it is connected to your network. Update your Pi's software using the following command:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Next, once you have been accepted into the &lt;a href="https://www.particle.io/products/development-tools/raspberry-pi-on-particle"&gt;Raspberry Pi on Particle Beta&lt;/a&gt;, run the following command on your Raspberry Pi to install &lt;a href="https://github.com/spark/particle-agent"&gt;&lt;code&gt;particle-agent&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bash &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt; curl &lt;span class="nt"&gt;-sL&lt;/span&gt; https://particle.io/install-pi &lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;During the installation of &lt;a href="https://github.com/spark/particle-agent"&gt;&lt;code&gt;particle-agent&lt;/code&gt;&lt;/a&gt;, you will be asked to log in using your Particle credentials in order to claim your Raspberry Pi to your account.&lt;/p&gt;

&lt;p&gt;Once the installation has completed, you can use your Raspberry Pi with Particle's tools. You can build and flash firmware using the &lt;a href="https://build.particle.io"&gt;Web IDE&lt;/a&gt;, &lt;a href="https://www.particle.io/products/development-tools/particle-desktop-ide"&gt;Particle Dev&lt;/a&gt;, &lt;a href="https://www.particle.io/products/development-tools/particle-command-line-interface"&gt;particle-cli&lt;/a&gt;, or &lt;a href="https://nrobinson2000.github.io/po-util/"&gt;po-util&lt;/a&gt; to build locally.&lt;/p&gt;




&lt;h1&gt;
  
  
  Running bash commands with Particle
&lt;/h1&gt;

&lt;p&gt;Particle on Raspberry Pi supports running bash commands and scripts as Linux processes from within the firmware. Input can be supplied with arguments and stdin, and output can can be captured for use in your firmware.&lt;/p&gt;

&lt;p&gt;Here is an example for retrieving the internal CPU temperature of the Raspberry Pi:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;# include "Particle.h"
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;getTempC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;Process&lt;/span&gt; &lt;span class="n"&gt;proc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"vcgencmd measure_temp"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;proc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wait&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// The output is temp=43.5'C, so read past the = and parse the number&lt;/span&gt;
  &lt;span class="n"&gt;proc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"="&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;cpuTemp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;proc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;parseFloat&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="n"&gt;Particle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;publish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"cpu-temp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cpuTemp&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;Particle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"getTempC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;getTempC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Nothing in the loop&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;






&lt;h2&gt;
  
  
  Input and Output
&lt;/h2&gt;

&lt;p&gt;With Particle on Raspberry Pi you can control the numerous pins on Raspberry Pi. Many of them are digital inputs and outputs, with several of them able to perform protocols like I2C, SPI, and UART. A few of the pins are capable of analog write through PWM (Pulse Width Modulation). Raspberry Pi's do not have native analog input capability, but one could use an ADC to obtain analog readings.&lt;/p&gt;


&lt;center&gt;
&lt;br&gt;
  &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Eot1Jdn4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cehs.github.io/images/pi-pinout.png"&gt;&lt;br&gt;
&lt;/center&gt;


&lt;h2&gt;
  
  
  Raspberry Pi Zero Wireless Full Setup
&lt;/h2&gt;

&lt;p&gt;On March 9, 2017 my Raspberry Pi Zero Wireless arrived. After an hour of setup I was happily tinkering away. The installation was successful and Particle is running well on my Pi Zero W, and I can do many of the same things I can do on my Pi 3.&lt;/p&gt;


&lt;center&gt;
&lt;br&gt;
  &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--txzbf3xD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cehs.github.io/images/pizerow.jpg"&gt;&lt;br&gt;
&lt;/center&gt;



&lt;blockquote&gt;
&lt;h4&gt;
  
  
  There were several steps to setup the Pi Zero W.  These instructions apply to the Pi 3 as well.
&lt;/h4&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Part One:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Unbox the kit:&lt;/strong&gt; The Pi Zero W and various accessories came in small separated plastic bags.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Download Raspbian:&lt;/strong&gt; I chose to use &lt;a href="https://www.raspberrypi.org/downloads/raspbian/"&gt;Raspbian Jessie Lite&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prepare the Pi Zero W for soldering:&lt;/strong&gt; I gathered the Pi Zero W, 40 pin header, breadboard, and case and brought them down to my workshop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Solder the Pi Zero:&lt;/strong&gt; I soldered the headers onto the Pi Zero W by placing the headers and Pi in the breadboard and soldering them in. (I am a perfectionist so it took me awhile to do it perfectly.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flash Raspbian to Micro SD card:&lt;/strong&gt; I first formatted the 8GB card and then used the USB Stick Writer in Linux Mint to write Raspbian Jessie Lite to the SD card.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configure Wi-Fi, Enable SSH, and Change Hostname on Pi Zero W:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;To enable Wi-Fi I simply created an entry in &lt;code&gt;etc/wpa_supplicant/wpa_supplicant.conf&lt;/code&gt; on the SD card.&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;ssid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"MyWiFiNetwork"&lt;/span&gt;
    &lt;span class="n"&gt;psk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"the_password"&lt;/span&gt;
    &lt;span class="n"&gt;key_mgmt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;WPA&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;PSK&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To enable SSH(Secure Shell) on my Pi Zero W I created a file called &lt;code&gt;ssh&lt;/code&gt; in the root of the SD card.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To change the hostname to something more useful than &lt;code&gt;raspberrypi&lt;/code&gt;, I had to make the following changes to the following files:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In &lt;code&gt;etc/hostname&lt;/code&gt; I changed the line to &lt;code&gt;pizero&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In &lt;code&gt;etc/hosts&lt;/code&gt;, I changed the &lt;code&gt;raspberrypi&lt;/code&gt; on the last line to &lt;code&gt;pizero&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Part Two:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Boot Raspberry Pi Zero Wireless and Connect using SSH:&lt;/strong&gt; Using Terminal on Linux or macOS I connected to my Pi Zero W by running: &lt;code&gt;ssh pi@pizero.local&lt;/code&gt;.&lt;br&gt;&lt;br&gt; &lt;em&gt;Your command will be different if you chose to set a different hostname in the previous section.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OPTIONAL - Change the password for the &lt;code&gt;pi&lt;/code&gt; user:&lt;/strong&gt; You can change the password from &lt;code&gt;raspberry&lt;/code&gt; to something more secure with &lt;code&gt;passwd&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check for updates:&lt;/strong&gt; Run the following to check and install any available updates:&lt;br&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install &lt;a href="https://github.com/spark/particle-agent"&gt;&lt;code&gt;particle-agent&lt;/code&gt;&lt;/a&gt;:&lt;/strong&gt; To install Particle on Raspberry Pi you must run the following command:&lt;br&gt;&lt;code&gt;bash &amp;lt;( curl -sL https://particle.io/install-pi )&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After the installation has finished, try the following in your own terminal (not your Pi Zero W) to test your Pi:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Here, my device is named `pizero`, but yours can be different&lt;/span&gt;

&lt;span class="nv"&gt;$ &lt;/span&gt;particle call pizero digitalwrite D7,LOW &lt;span class="c"&gt;# This turns off the onboard lED&lt;/span&gt;

&lt;span class="nv"&gt;$ &lt;/span&gt;particle call pizero digitalwrite D7,LOW &lt;span class="c"&gt;# This turns it on&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You should now be able to write your own code for the Raspberry Pi using the &lt;a href="https://build.particle.io"&gt;Web IDE&lt;/a&gt;, &lt;a href="https://www.particle.io/products/development-tools/particle-desktop-ide"&gt;Particle Dev&lt;/a&gt;, &lt;a href="https://www.particle.io/products/development-tools/particle-command-line-interface"&gt;particle-cli&lt;/a&gt;, or &lt;a href="https://nrobinson2000.github.io/po-util/"&gt;po-util&lt;/a&gt; to build locally.&lt;/p&gt;




&lt;h2&gt;
  
  
  More information
&lt;/h2&gt;

&lt;p&gt;Particle is thoroughly documenting Particle on Raspberry Pi. &lt;a href="https://docs.particle.io/guide/getting-started/intro/raspberry-pi/"&gt;Their official documentation&lt;/a&gt; provides a multitude of information, reference material, and tutorials. &lt;a href="https://docs.particle.io/guide/getting-started/start/raspberry-pi/"&gt;Their setup guide for Raspberry Pi is comprehensive.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me the most useful section of the documentation is the &lt;a href="https://docs.particle.io/reference/firmware/raspberry-pi/"&gt;Firmware Reference&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Additionally, the &lt;a href="https://community.particle.io"&gt;Particle Community&lt;/a&gt; is always available to help with any issues or questions.&lt;/p&gt;


</description>
      <category>raspberrypi</category>
      <category>iot</category>
      <category>particle</category>
      <category>setup</category>
    </item>
    <item>
      <title>Hi, I'm Nathan Robinson</title>
      <dc:creator>Nathan Robinson</dc:creator>
      <pubDate>Sat, 11 Mar 2017 21:11:26 +0000</pubDate>
      <link>https://dev.to/nrobinson2000/hi-im-nathan-robinson</link>
      <guid>https://dev.to/nrobinson2000/hi-im-nathan-robinson</guid>
      <description>&lt;p&gt;I have been coding for 3 years.&lt;/p&gt;

&lt;p&gt;You can find me on GitHub as &lt;a href="https://github.com/nrobinson2000" rel="noopener noreferrer"&gt;nrobinson2000&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I live in Cape Elizabeth, ME.&lt;/p&gt;

&lt;p&gt;I am a freelance consultant.&lt;/p&gt;

&lt;p&gt;I mostly program in these languages: Particle, Bash, JavaScript, Python, HTML, CSS.&lt;/p&gt;

&lt;p&gt;I am currently learning more about creating IoT solutions with Particle and Raspberry Pi.&lt;/p&gt;

&lt;p&gt;Nice to meet you.&lt;/p&gt;

</description>
      <category>introduction</category>
    </item>
  </channel>
</rss>
