ruby-x.github.io/app/views/pages/arm/remote_pi.html.haml

74 lines
2.8 KiB
Plaintext
Raw Normal View History

= render "pages/arm/menu"
%h1= title "How to use a remote pi"
2018-04-28 17:32:42 +02:00
%h3 Headless
2018-04-10 18:50:07 +02:00
%p The pi is a strange mix, development board and full pc in one. Some people use it as a pc, but not me.
%p I use the pi because it is the same price as an Arduino, but much more powerful.
%p As such i dont use the keyboard or display and that is called headless mode, logging in with ssh.
%pre
%code
:preserve
ssh -p 2222 -l pi localhost
%p the -p 2222 is only needed for the qemu version, not the real pi.
2018-04-28 17:32:42 +02:00
%h3 Authorise yourself
2018-04-10 18:50:07 +02:00
%p
Over ssh one can use many other tools, but the password soon gets to be a pain.
So the first thing i do is copy my public key over to the pi. This will allow login without password.
%pre
%code
:preserve
scp -P 2222 .ssh/id_rsa.pub pi@localhost:.ssh/authorized_keys
%p
This assumes a fresh pi, otherwise you have to append your key to the authorized ones. Also if it complains about no
id_rsa.pub then you have to generate a key pair (public/private) using ssh-keygen (no password, otherwise youll be typing that)
2018-04-28 17:32:42 +02:00
%h3 Sync the working tree
%p
Off course I do all that to be able to actually work on my machine.
On the Pi my keyboard doesnt even work and id have to use emacs or nano instead
of Atom. So i need to get the files across.
%br
For this there is a million ways, but since i just go one way (mac to pi)
i use rsync (over ssh).
2018-04-10 18:50:07 +02:00
%p
2018-04-28 17:32:42 +02:00
I set up a directory (home) in my pi directory (on the mac),
that i copy to the home directory on the pi using:
2018-04-10 18:50:07 +02:00
%pre
%code
:preserve
rsync -r -a -v -e "ssh -l pi -p 2222" ~/pi/home/ localhost:/home/pi
2018-04-28 17:32:42 +02:00
2018-04-10 18:50:07 +02:00
%p The pi/home is on my laptop and the command transfers all files to /home/pi , the default directory of the pi user.
2018-04-28 17:32:42 +02:00
%h3 Automatic sync
%p
Transferring files is off course nice, but having to do it by hand after
saving quickly becomes tedious.
%p
Fswatch to the rescue. It will watch the filesystem (fs) for changes.
Install with 'brew install fswatch'
2018-04-10 18:50:07 +02:00
%p
Then you can store the above rsync command in a shell script, say sync.sh.
Add afplay “/System/Library/Sounds/Morse.aiff” if you like to know it worked.
%p Then just run
%pre
%code
:preserve
2018-04-28 17:32:42 +02:00
fswatch -o ~/pi/home | xargs -n1 -I{} ~/sync.sh
%p
And hear the ping each time you save. (btw -I{} makes it so the file name that changed
does not get passed on. Rsync figures that out)
%h2 Conclusion
2018-04-10 18:50:07 +02:00
%p So the total setup involves the qemu set up as described. To work i
%ul
%li start the terminal (iterm)
%li start the pi, with my alias “pi” *
%li log in to the pi in its window
2018-04-28 17:32:42 +02:00
%li open atom with the directory i work (within the home)
%li edit, save, wait for ping, alt-tab to pi window, run my whatever and repeat until its time for tea
PS: (i dont log into the prompt it gives in item so as not to accidentally quit the qemu session with ctr-c )