The "Comma", "Openpilot", "ChffrPlus", "EON", "Panda", and "Giraffe" are registered trademarks of Comma.ai, Inc. This website, and it's affiliated links are not endorsed, or supported by Comma.ai, Inc.
Nothing on this website or it's affiliated websites will enable your vehicle to be super-human and drive itself. You must keep your eyes on the road and your hands on the wheel at all times. This documentation is for research purposes only.
Use this information at your own risk.
Capture a screenshot
If you want an easy way to capture a quick screenshot with the EON then look no further. It's honestly the best I could come up with given my limited knowledge with Android and my options so if you have better solution please reach out and let me know.
The secret seems to lie in getting into the su
which essentially elevates your privilages to run commands on the Android shell.
I will put this in a single-line script eventually but here is the commands to run quick screenshots.
SSH into the EON first and then...
su
mkdir -p /data/screenshots
Create this shell script
Copy this script below (CMD+C)
#!/bin/sh
# imgur script by Bart Nagel <bart@tremby.net>
# version 4.1
# I release this into the public domain. Do with it what you will.
# Required: curl
#
# Optional: xsel or xclip for automatically putting the URLs on the X selection
# for easy pasting
#
# Instructions:
# Put it somewhere in your path and maybe rename it:
# mv ~/Downloads/imgurbash.sh ~/bin/imgur
# Make it executable:
# chmod +x ~/bin/imgur
# Optional, since Alan kindly provided an API key for this script: stick your
# API key in the top:
# vim ~/bin/imgur
# Upload an image:
# imgur images/hilarious/manfallingover.jpg
# Upload multiple images:
# imgur images/delicious/cake.png images/exciting/bungeejump.jpg
# The URLs will be displayed (and the delete page's URLs will be displayed on
# stderr). If you have xsel or xclip the URLs will also be put on the X
# selection, which you can usually paste with a middle click.
# API Key provided by Alan@imgur.com
apikey="6684034fe3ce577"
# function to output usage instructions
function usage {
echo "Usage: $(basename $0) <filename> [<filename> [...]]" >&2
echo "Upload images to imgur and output their new URLs to stdout. Each one's" >&2
echo "delete page is output to stderr between the view URLs." >&2
echo "If xsel or xclip is available, the URLs are put on the X selection for" >&2
echo "easy pasting." >&2
}
# check API key has been entered
if [ "$apikey" = "Your API key" ]; then
echo "You first need to edit the script and put your API key in the variable near the top." >&2
exit 15
fi
# check arguments
if [ "$1" = "-h" -o "$1" = "--help" ]; then
usage
exit 0
elif [ $# == 0 ]; then
echo "No file specified" >&2
usage
exit 16
fi
# check curl is available
type curl >/dev/null 2>/dev/null || {
echo "Couln't find curl, which is required." >&2
exit 17
}
clip=""
errors=false
# loop through arguments
while [ $# -gt 0 ]; do
file="$1"
shift
# check file exists
if [ ! -f "$file" ]; then
echo "file '$file' doesn't exist, skipping" >&2
errors=true
continue
fi
# upload the image
response=$(curl -H "Authorization: Client-ID $apikey" -F "image=@$file" \
https://api.imgur.com/3/upload.xml)
# the "Expect: " header is to get around a problem when using this through
# the Squid proxy. Not sure if it's a Squid bug or what.
if [ $? -ne 0 ]; then
echo "Upload failed" >&2
errors=true
continue
elif [ $(echo $response | grep -c "<error_msg>") -gt 0 ]; then
echo "Error message from imgur:" >&2
echo $response | sed -r 's/.*<error_msg>(.*)<\/error_msg>.*/\1/' >&2
errors=true
continue
fi
# parse the response and output our stuff
url=$(echo $response | sed -r 's/.*<link>(.*)<\/link>.*/\1/')
deleteurl="http://i.imgur.com/delete/$(echo $response |\
sed -r 's/.*<deletehash>(.*)<\/deletehash>.*/\1/')"
echo $url
echo "Delete page: $deleteurl" >&2
# append the URL to a string so we can put them all on the clipboard later
clip="$clip$url
"
done
# put the URLs on the clipboard if we have xsel or xclip
if [ $DISPLAY ]; then
{ type xsel >/dev/null 2>/dev/null && echo -n $clip | xsel; } \
|| { type xclip >/dev/null 2>/dev/null && echo -n $clip | xclip; } \
|| echo "Haven't copied to the clipboard: no xsel or xclip" >&2
else
echo "Haven't copied to the clipboard: no \$DISPLAY" >&2
fi
if $errors; then
exit 1
fi
Run this script inside your SSH terminal window.
nano /data/imgupload.sh
And paste the script you copied earlier into this file.
Now hit CTRL+X
and Y
to save the file.
Now make the script executable with:
chmod +x /data/imgupload.sh
Create a screenshot...
screencap -d /data/screenshots/screenshot.png
To upload the screenshot...
/data/screenshots/imgupload.sh /data/screenshots/screenshot.png
You could wrap all of this up in a single shell script...
#!/bin/sh
// elevates privilates
su
// makes directory if it doesn't exist...
mkdir -p /data/screenshots
// change into screenshots directory
cd /data/screenshots/
// capture screenshot
screencap -d /data/screenshots/screenshot.png
./imgupload.sh ./screenshot.png
Keep in mind, this is not necessarily working code.
But you get the idea of what we're going for here.
The earlier commands should work great though.