This is a script I've had for over 20 years to recompress videos to multiple formats, including resizing resolution, rotating files, changing framerate, capturing from PAL analog cards, back in the day capturing videos from an analog tivo (circa 20 years ago), and much more.
While some amount is kind of obsolete and left for posterity, it's full of options that took me a long time to find for mencoder, and now ffmpeg, the better solution.
The script: https://marc.merlins.org/linux/scripts/vidcomp
There isn't a lot of documentation, except the script itself. Please get the version from the link above, but for indexing purposes, I'll include a potentially slightly out of date version here:
#!/bin/bash
# vidcomp -h -time "-dvd-device . -alang English" dvd://1 /var/local/space/vid/10com8.avi
# http://gentoo-wiki.com/HOWTO_Mencoder_Introduction_Guide
# http://electron.mit.edu/~gsteele/ffmpeg
# http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-enc-libavcodec.html
# http://web.njit.edu/all_topics/Prog_Lang_Docs/html/mplayer/encoding.html
# http://www.linux.com/article.pl?sid=06/08/22/2121258
# transcode -f 15 -w 800,250,100 -y divx5,lame -N 0x55 -o test.avi -i $1
# enable PAL on PVR350 mpeg2 encoder
#v4l2-ctl --set-input 2
#v4l2-ctl -s 2
#v4l2-ctl --set-ctrl=video_peak_bitrate=8000000
#v4l2-ctl --set-ctrl=video_bitrate=6000000
# dumpstream stream# file.tivo
dumpstream () {
mplayer tivo://tivo/$1 -demuxer 33 -dumpstream -dumpfile "$2"
}
die () {
echo "${1:-}"
exit 1
}
# vidcomp -br 10000 -time "-edl cuts" rec_0012.mov
#mplayer -vf cropdetect enquete.vob
#vidcomp -h -vf crop=336:320:12:126 enquete.vob
# Aspect ratio has to be forced with codecs other than xvid
#vf='-vf scale=480:370'
# vidcomp -vf "-filter:v fps=29" $i
vf=""
af=""
#codec=h264
#codec=h265
#br=3000
# AV1 is supposed to be better tan VP9, but on my short tests,
# VP9 was faster and gave smaller files.
codec=vp9
br=2000
abr=128
rot=""
ffrot=""
aud_channels=""
aud_srate=""
time="" # -ss 10 -endpos 1:54:00 (mencoder)
# -time "-ss 0:3:40 -t 3:20" (ffmpeg)
# or -time "-ss 0:3:40 -t 3:20" -vf "mp=eq2=0.9:1:-0.1" (ffmpeg)
# vidcomp -br 8000 -time "-ss 04:00 -t 0:29:20" -vf "mp=eq2=0.9:1:-0.1" full.avi
# Crop the right side crop=1540:1080:0:0
if [ $0 = *tivo* ]]; then
echo "Tivo Mode"
# tivo files are sometimes mis-detected: force the right demuxer
demux="-demuxer 33"
# Aspect ratio has to be forced with codecs other than xvid
aspect='-force-avi-aspect 1.333'
# and remove crap we don't want (tivo inserts a line of crap at the top)
vf="-vf crop=352:476,kerndeint"
elif [ $0 = *pal* ]]; then
# Couldn't quite get this to work yet, crop overrides it :(
#vf='-vf scale=540:405,crop=512:384,kerndeint'
vf='-vf scale=768:576,kerndeint'
# problem with divx is that pass2 can fail with br too low errors
codec=h264
br=800
# elif [ $0 = *camvidrecomp ]]; then
# codec=ffmpeg
# br=8000
# abr=128
# old cameras
# abr=48
# br=2400
# aud_channels="-channels 1"
# aud_srate="-srate 22050"
fi
# Hack for MTS
demux="-mc 100"
#demux="-demuxer lavf"
#aspect='-force-avi-aspect 1.777'
while [ ! -z "$1" ] && [ "$1" =~ ^-.* ]]
do
if [ "$1" = "-w" ]; then
shift
codec=win
vf="-forceidx -vf kerndeint"
fi
if [ "$1" = "-d" ]; then
shift
codec=divx
#vf="-forceidx -vf kerndeint"
fi
if [ "$1" = "-D" ]; then
shift
codec=divx1
vf="-forceidx -vf kerndeint"
fi
if [ "$1" = "-F" ]; then
shift
codec=flv
br=400
abr=56
aud_srate="-srate 22050"
vf='-vf scale=512:384'
fi
if [ "$1" = "-h" -o "$1" = "-h4" ]; then
shift
codec=h264
vf="-forceidx -vf kerndeint"
fi
if [ "$1" = "-h4ff" ]; then
shift
codec=ffmpeg4
fi
if [ "$1" = "-h5" ]; then
shift
codec=h265
fi
if [ "$1" = "-vp9" ]; then
shift
codec=vp9
fi
if [ "$1" = "-av1" ]; then
shift
codec=av1
fi
if [ "$1" = "-x" ]; then
shift
codec=xvid
vf="-forceidx -vf kerndeint"
fi
if [ "$1" = "-ff" ]; then
shift
codec=ffmpeg
fi
# https://trac.ffmpeg.org/wiki/Encode/H.264
# says not compatible with most players
if [ "$1" = "-ffll" ]; then
shift
codec=ffmpegll
fi
if [ "$1" = "-vol" ]; then
shift
vol=":vol=$1"
shift
fi
# try instead of rotate
if [ "$1" = "-f" ]; then
shift
rot="-vf flip,mirror"
#ffrot="-vf hflip,vflip"
# https://www.baeldung.com/linux/ffmpeg-rotate-video#:~:text=transpose%20is%20an%20FFmpeg%20filter,the%20values%20from%200%2D3.
ffrot="-vf hflip,vflip"
ffrot="-vf transpose=1,transpose=3"
fi
if [ "$1" = "-r" ]; then
#rot="-vf mirror,rotate=$2"
# works with -r 3
rot="-vf rotate=$2"
ffrot="-vf transpose=$2"
shift 2
fi
if [ "$1" = "-br" ]; then
br="$2"
shift 2
fi
# -ss 10 -endpos 1:54:00
# -ss 00:01:00 -to 00:02:00
if [ "$1" = -time ]; then
time="$2"
shift 2
fi
# for instance -vf scale=540:405,crop=512:384
if [ "$1" = -vf ]; then
vf="$2"
shift 2
fi
done
test $# -eq 1 || test $# -eq 2 || die "$0 file_src file_dest (please read script for options)"
test $# -eq 2 && test -f "$2" && die "file_dest should not exist"
src="$1"
dest="${2:-$src.new}"
#set -vx
if [ "$codec" = win ]; then
ionice -c3 nice -19 mencoder $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc lavc -lavcopts vcodec=msmpeg4v2:vhq:vbitrate=$br $rot -o "$dest" "$src"
elif [ "$codec" = divx1 ]; then
ionice -c3 nice -19 mencoder $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc lavc -lavcopts vcodec=mpeg4:vhq:trell=yes:v4mv=yes:vbitrate=$br -ffourcc DX50 $rot -o "$dest" "$src"
elif [ "$codec" = flv ]; then
# http://www.jeremychapman.info/cms/mencoder-avi-to-flv-conversion
ionice -c3 nice -19 mencoder $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc lavc -lavcopts vcodec=flv:vbitrate=$br:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -of lavf $rot -o "$dest" "$src"
elif [ "$codec" = xvid ]; then
ionice -c3 nice -19 mencoder $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc xvid -xvidencopts bitrate=$br $rot -o "$dest" "$src"
elif [ "$codec" = ffmpeg4 ]; then
# aspect/-force-avi-aspect not supported by ffmpeg
#ionice -c3 nice -19 ffmpeg $time -analyzeduration 9999999 -probesize 9999999 -y -i "$src" $vf -c:v libx264 -preset medium -b:v ${br}k -pass 1 -c:a libfdk_aac -b:a 128k -f mp4 /dev/null
#ionice -c3 nice -19 ffmpeg $time -analyzeduration 9999999 -probesize 9999999 -i "$src" $vf -c:v libx264 -preset medium -b:v ${br}k -pass 2 -c:a libfdk_aac -b:a 128k -f mp4 "$dest"
ionice -c3 nice -19 ffmpeg $time -analyzeduration 9999999 -probesize 9999999 -y -i "$src" -filter:v fps=30 $vf -c:v libx264 -preset medium -b:v ${br}k -pass 1 -an -f mp4 /dev/null
ionice -c3 nice -19 ffmpeg $time -analyzeduration 9999999 -probesize 9999999 -i "$src" -filter:v fps=30 $vf -c:v libx264 -preset medium -b:v ${br}k -pass 2 -c:a aac -b:a 128k -f mp4 "$dest"
### H265 in MP4 => slow and royalties
elif [ "$codec" = h265 ]; then
# https://trac.ffmpeg.org/wiki/Encode/H.265
ionice -c3 nice -19 ffmpeg $time -y -i "$src" $vf $ffrot -filter:v fps=30 -c:v libx265 -b:v ${br}k -x265-params pass=1 -an -f mp4 /dev/null
ionice -c3 nice -19 ffmpeg $time -i "$src" $vf $ffrot -filter:v fps=30 -c:v libx265 -b:v ${br}k -x265-params pass=2 -c:a aac -b:a 128k -f mp4 "$dest"
# https://trac.ffmpeg.org/wiki/Encode/AV1
#
# vp9 vs av1 comparison and flags:
# https://jonathanmh.com/p/encoding-webm-videos-with-ffmpeg-vp9-av1
# Gemini says: Compression Efficiency
# * AV1: Offers the best compression efficiency, resulting in smaller file sizes for a given quality level
# * H.265: Provides significant improvements over H.264, offering better compression than VP9 in many cases
# * VP9: While not as efficient as H.265 or AV1, it still offers decent compression and is widely supported.
# Encoding and Decoding Speed:
# * AV1: Requires more computational power for encoding and decoding, which can impact performance on older hardware
# * H.265: Offers a good balance between compression efficiency and encoding/decoding speed.
# * VP9: Generally faster to encode and decode compared to AV1.
### VP9 is free version of H265
# https://caniuse.com/?search=vp9
# cpu used lower values are slower but better quality -row-mt 1 added HT. Speed is faster than AV1 but compression seems still good
# 2453715 file1.mp4
# 1555963 file1_av1_4.webm
# 1611192 file1_av1_6.webm
# 1611192 file1_av1_8.webm
# 1668740 file1_vp9_4.webm
# 1598794 file1_vp9_6.webm
# 1595698 file1_vp9_8.webm
elif [ "$codec" = vp9 ]; then
ionice -c3 nice -19 ffmpeg $time -y -i "$src" $vf $ffrot -filter:v fps=30 -c:v libvpx-vp9 -b:v ${br}k -cpu-used 6 -row-mt 1 -pass 1 -an -f null /dev/null
ionice -c3 nice -19 ffmpeg $time -i "$src" $vf $ffrot -filter:v fps=30 -c:v libvpx-vp9 -b:v ${br}k -cpu-used 6 -row-mt 1 -pass 2 -c:a libopus -b:a 128k "$src.webm"
### AV1 a better version of VP9
# https://caniuse.com/?search=av1
# https://trac.ffmpeg.org/wiki/Encode/AV1
# cpu used lower values are slower but better quality -row-mt 1 added HT
elif [ "$codec" = av1 ]; then
ionice -c3 nice -19 ffmpeg $time -y -i "$src" $vf $ffrot -filter:v fps=30 -c:v libaom-av1 -b:v ${br}k -cpu-used 8 -row-mt 1 -pass 1 -an -f null /dev/null
ionice -c3 nice -19 ffmpeg $time -i "$src" $vf $ffrot -filter:v fps=30 -c:v libaom-av1 -b:v ${br}k -cpu-used 8 -row-mt 1 -pass 2 -c:a libopus -b:a 128k "$src.webm"
# old legacy mencoder stuff (mencoder h264 or divx)
else
pass="$dest".pass
for i in 1 2
do
echo "DOING $codec PASS $i"
echo "------------------"
if [ "$codec" = h264 ]; then
#vf=$vf,dsize=4/3,scale
#vf=$vf,scale=720:480
vf=$vf,scale # why is scale there by itself?
# Trellis searched quantization
# do not allow space in source, to allow a multi file source
ionice -c3 nice -19 mencoder -passlogfile "$pass" $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect -vf $vf -ovc x264 -x264encopts bitrate=$br:turbo=1:pass=1:threads=0 $rot -o "$dest" $src || die "multipass failed on pass $i"
elif [ "$codec" = divx ]; then
# Trellis searched quantization
ionice -c3 nice -19 mencoder -passlogfile "$pass" $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc lavc -lavcopts vcodec=mpeg4:vhq:trell=yes:v4mv=yes:vbitrate=$br:vpass=$i -ffourcc DX50 $rot -o "$dest" "$src" || die "multipass failed on pass $i"
fi
done
/bin/rm "$pass" *.pass.mbtree &>/dev/null
#else
# echo "Unknown $codec" >&2
fi
#vidrename --noinfo "$dest"
/bin/rm ffmpeg2pass-0.log ffmpeg2pass-0.log.mbtree x265_2pass.log* &>/dev/null
This is for linux, using mplayer because it was written many years ago before ffmpeg was a proper option. It parses mplayer video file decoding to rename filenames with the proper codec and file container.
The script: https://marc.merlins.org/linux/scripts/vidrename
Possible video containers supported by this script
*.mpeg (original mpep1/mpeg2 from the '90s)
*.rm (very old realaudio/realvideo from the 90's)
*.mov (old apple quicktime container, also from 90's)
wmv (old video media player, still from 90's)
avi (newer-ish video media)
mp4 (for a while new format used by most videos)
ogv (Org Vorbis OSS format, now obsolete)
mkv (free open source container to get around mp4 patents and royalties)
webm (newer free/open source container)
The script does not bother to show old/obsolete codecs for WMV/AVI (you can add support if you care), and concentrates on only showing some more popular formats over the years that I cared more about:
divx3.avi
divx4.avi
divx5.avi
xvid.avi
H264.mp4 (for a while the most popular format after divx5/divx4/divx3)
H265.mp4 (the more efficient version of H264, but the patent/royalties fees on it are way high)
VP9.mp4 / VP4.webm (meant to replace H264 and H265 with more efficient and free version)
AV1.mp3 / AV1.webm (newer versino of VP9, still open source and free)
This is what it looks like
sauron [mc]$ l
total 15148
drwxr-sr-x 1 merlin merlin 188 Nov 17 19:32 .
drwxr-sr-x 1 merlin merlin 184 Nov 17 19:32 ..
-rw-r--r-- 1 merlin merlin 2453715 Nov 17 19:31 file1.mp4
-rw-r--r-- 1 merlin merlin 1572011 Nov 17 19:31 file2.mp4
-rw-r--r-- 1 merlin merlin 1734137 Nov 17 18:25 Out16_av1.mp4
-rw-r--r-- 1 merlin merlin 1433362 Nov 17 18:29 Out16a_vp9.mp4
-rw-r--r-- 1 merlin merlin 827673 Nov 17 18:35 Out16c_vp9.mp4
-rw-r--r-- 1 merlin merlin 1449311 Nov 17 18:26 Out16_vp9.mp4
-rw-r--r-- 1 merlin merlin 3496280 Nov 17 18:22 Out_av1.mp4
-rw-r--r-- 1 merlin merlin 2527312 Nov 17 18:20 Out_vp9.mp4
sauron [mc]$ vidrename --noinfo *
Going from file1.mp4
to File1 - H265.mp4
Going from file2.mp4
to File2 - VP9.mp4
Warning for Out16_av1.mp4, webm != mp4
Going from Out16_av1.mp4
to Out16 av1 - AV1.webm
Warning for Out16a_vp9.mp4, webm != mp4
Going from Out16a_vp9.mp4
to Out16a vp9 - VP9.webm
Warning for Out16c_vp9.mp4, webm != mp4
Going from Out16c_vp9.mp4
to Out16c vp9 - VP9.webm
Warning for Out16_vp9.mp4, webm != mp4
Going from Out16_vp9.mp4
to Out16 vp9 - VP9.webm
Warning for Out_av1.mp4, webm != mp4
Going from Out_av1.mp4
to Out av1 - AV1.webm
Warning for Out_vp9.mp4, webm != mp4
Going from Out_vp9.mp4
to Out vp9 - VP9.webm
sauron [mc]$ l
total 15148
drwxr-sr-x 1 merlin merlin 298 Nov 17 19:32 .
drwxr-sr-x 1 merlin merlin 184 Nov 17 19:32 ..
-rw-r--r-- 1 merlin merlin 2453715 Nov 17 19:31 'File1 - H265.mp4'
-rw-r--r-- 1 merlin merlin 1572011 Nov 17 19:31 'File2 - VP9.mp4'
-rw-r--r-- 1 merlin merlin 1734137 Nov 17 18:25 'Out16 av1 - AV1.webm'
-rw-r--r-- 1 merlin merlin 1433362 Nov 17 18:29 'Out16a vp9 - VP9.webm'
-rw-r--r-- 1 merlin merlin 827673 Nov 17 18:35 'Out16c vp9 - VP9.webm'
-rw-r--r-- 1 merlin merlin 1449311 Nov 17 18:26 'Out16 vp9 - VP9.webm'
-rw-r--r-- 1 merlin merlin 3496280 Nov 17 18:22 'Out av1 - AV1.webm'
-rw-r--r-- 1 merlin merlin 2527312 Nov 17 18:20 'Out vp9 - VP9.webm'
Other example uses:
sauron [mc]$ vidrename --help
Unknown option: help
/var/local/scr/vidrename [--fixepisodes] [--verbose] [--extonly] [--dots] [--spacedash] [--spaces2dash] [--ucname [num]] [--add text] [--noinfo] [--writetofile] [--norename] [--addfps]
--extonly: only fix file extension, do not beautify filename
--dots: remove all dots from filenames ane replace with spaces
--spacedash: add spaces around all dashes if not already present (only one by default) (IGNORED, ON BY DEFAULT)
--spaces2dash: replace all spaces with dashes
--fixepisodes: normalize showname - 1x01 episodename.ext
--ucname: number of letters in a word before we uppercase the first (default 3) (IGNORED)
--add: add random text before the extension
--noinfo: do not add file info to filename ( - XxY - z kbps)
--writetofile: do not add fileinfo to filename, write to a different file
--norename: only print what would be done, do not rename files
--addfps add fps of video to filenames
sauron [mc]$ vidrename --spaces2dash --addfps *
Going from File1_-_H265_-_H265.mp4
to File1_-_H265_-_1920x1080_-_2974kbps_-_30.000_fps_-_H265.mp4
Going from File2_-_VP9_-_VP9.mp4
to File2_-_VP9_-_1920x1080_-_1861kbps_-_60.000_fps_-_VP9.mp4
Going from Out16_av1_-_AV1_-_AV1.webm
to Out16_av1_-_AV1_-_1920x1080_-_30.000_fps_-_AV1.webm
Going from Out16a_vp9_-_VP9_-_VP9.webm
to Out16a_vp9_-_VP9_-_1920x1080_-_30.000_fps_-_VP9.webm
Going from Out16c_vp9_-_VP9_-_VP9.webm
to Out16c_vp9_-_VP9_-_1920x1080_-_30.000_fps_-_VP9.webm
Going from Out16_vp9_-_VP9_-_VP9.webm
to Out16_vp9_-_VP9_-_1920x1080_-_30.000_fps_-_VP9.webm
Going from Out_av1_-_AV1_-_AV1.webm
to Out_av1_-_AV1_-_1920x1080_-_30.000_fps_-_AV1.webm
Going from Out_vp9_-_VP9_-_VP9.webm
to Out_vp9_-_VP9_-_1920x1080_-_30.000_fps_-_VP9.webm
As far as trips back in memory lane, go, this was a winner. Orbital are OGs in the electronic music world. After Jean Michel Jarre and Vangelis, they were likely the 3rd electronic music act I listened to, way back when. It's very hard to define their genre, especially since they predate most EDM genres, but I've seen "industrial electro funk" although Halycon and on is definitely it's own genre still (more ambient).
The event was organized by Goldenvoice. The flier didn't have any info on whether they were going to be OTC, have openers, or until what time the event was running. The only piece of info was that it was supposed to start at 21:00. By the time I arrived at 22:00, wary of previous events announced at 21:00 but having so-so openers, or sometimes not even really opening doors until 22:00, but this time around they apparently did open at 21:00 and Orbital themselves did start at 21:00, go figure...
So, I missed the first hour, but they were going strong by the time I arrived:
not every time you see this
The somewhat weird thing is they stopped in the middle of the set after saying something I was unable to comprehend due to poor microphone sound, but they took a 20mn break where they just left the stage and everyone in the room, and came back 20mn later :)
The 2nd half of the show had more top tracks, including of course the Halcyon and on, but plenty more including "where times becomes a loop" that I had totally forgotten about:
the room was packed
one of them performed without shoes :)
The show ended at 00:40. Definitely good time were had:
Back to see Neil deGrasse Tyson for a 3rd time, this time for part 2 of "An Astrophysicist Goes To The Movies". It ws a fun evening as any evening would him, would be, although I found this specific talk a little weaker than the first one, probably because he had to find other material that he hand't already used in the first talk, but that said there were still plenty of fun bits, and as I said, any time with him is a fun time :)
he still has a few books I should read :)
the list of movies for his 2nd talk
those doors were indeed portals to a 4th dimension we can't see as 3 dimensional beings
wizard of oz was wrong all along!
I never caught that one either
parsecs are a unit of distance, they can't be used for speed or time (BTW a parsec is 3.6 light years as I found out)
Gravity: haha, that's an easy one. It had lots of good physics, but also some glaring holes
Oh no, don't let him go! :)
As a bonus, he gave he attendees a hall pass for the next day if they were late :)
And I had no idea he was on zoolander 2 :)
It was another very fun night, very quick video summary:
So, after using WNDR routers that allowed various linux fimrware replacements, the last one I had was just struggling running a name server and other things I needed due to old hardware and lack of horsepwoer and RAM.
After asking around, I was told to try the Ubiquity Edgerouter 4, which is indeed a nice little router and comes with linux out of the box. The best thing is it's designed to give you full access so you can install your own linux software. Well done!
But, for some strange reason, the then wonderful people at ubiquity did not figure out that it was useful to plug a serial port adapter to monitor or connect to another device, or even to use/need external USB storage. It is of course linux, you can build your own kernel and modules, but doing it for another architecture requires cross compilers and a non trivial setup that would likely have taken me days to setup.
This is where Nils Andreas Svee (Lockhair) comes in, and as part of his CAKE project to improve networking on that device (requiring a new kernel), he built a full compiler suite for that kernel, and very nicely added USB serial modules to his build for me a few years back for the ER1.x firmware.
Fast forward a few years, and the original 1.10.11 was based on Debian 7 (Wheezy) which became totally obsolete. Getting updated packages for that ancient distro became difficult, so I figured I should upgrade to 2.x.
After doing so ( EdgeRouter ER-4/ER-6P/ER-12/ER-12P: Firmware v2.0.9-hotfix.7 31 Jul 2023 from https://ui.com/download/releases/firmware ), I of course realized it was a new kernel that needed new modules.
But then I realized that during that time Ubiquity turned evil and stopped releasing GPL required code, including the kernel, which in turn caused Lochnair to stop being able to maintain his project: https://community.ui.com/questions/CAKE-thread-gone/27de66b2-9ac2-4fcb-93f7-d02cd5785b4c
I had a glimmer of hope that the new binary kernels were close enough to the last officially released kernel source, and asked him if he could build the extra missing modules: https://github.com/Lochnair/kernel_e300/issues/2 . He super nicely agreed and they worked!
Thanks to him, I now have have a fully upgraded and featured linux route with usb-serial support and usb-storage support.
You can get the modules here:
usbcore: registered new interface driver pl2303
usbserial: USB Serial support registered for pl2303
pl2303 1-1.1:1.0: pl2303 converter detected
usb 1-1.1: pl2303 converter now attached to ttyUSB0
usbcore: registered new interface driver uas
usb 1-1.2: new high-speed USB device number 4 using xhci-hcd
usb 1-1.2: New USB device found, idVendor=0951, idProduct=1666
usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.2: Product: DataTraveler 3.0
usb 1-1.2: Manufacturer: Kingston
usb 1-1.2: SerialNumber: 1C6F654E48EBB131D95D0ABB
usb-storage 1-1.2:1.0: USB Mass Storage device detected
scsi host0: usb-storage 1-1.2:1.0
scsi 0:0:0:0: Direct-Access Kingston DataTraveler 3.0 PMAP PQ: 0 ANSI: 6
sd 0:0:0:0: [sda] 121110528 512-byte logical blocks: (62.0 GB/57.8 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 45 00 00 00
sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1 sda2
sd 0:0:0:0: [sda] Attached SCSI removable disk
If you use this, please make a donation to him for his good work:
π
2024-11-10 01:01
in Arduino, Computers, Electronics
I attended Pasadena Hackaday Supercon, so I figured I'd put my pictures into a quick blog entry, shouldn't take long...
1) Oh, I need to finish writing code to get the SAO badge holder to do something fun
2) Mmmh, why does this python global variable thing doessn't work in the function
3) Goes to re-learn python, with help from gemini and how python forks global variables by default in functions so what you write to them isn't saved at local scope (oh my, why did they do that?)
4) after more hacking, get a proper demo working:
It had been a while since I had seen Jason Ross, so it was good news when I heard he was coming back at Midway SF.
What wasn't expected, was that it would be in a side building which was mostly a hangar party, for some reason they were badly lacking bathrooms, so there was a 30mn bathroom line, which was not good.
The lineup felt a bit all over the place in that there was no real unity in the music style, and I found myself waiting for Jason to take over, which he did at 0:30. I had a good time for the remaining 90mn.
After having such a great time at the linux.conf.au Open Hardware Miniconfs over the year, and missing them after the last one where I built those badges, I somehow missed a local-enough Hackaday Supercon that had been going on for years. Oh noes!
It was very cool that I got to wear my LCA SAO badges for the first time:
Thanks to Anthony for letting me know about it, and I was able to attend. Went there early on friday for the pre-conf to work on the badges:
the conference badge was this 6 port micropython rPi micro with a couple of SAOs.
they nicely provided food all 3 days
essential geek survival food :)
They gave us a quick primer on how the badge worked, although it would have been better on a webpage with links and info for total beginners who had never used micropython and thorny or knew what thorny was (that included me):
I'm glad I took pictures of these slides, they only made sense many hours later. They should have been online
finding fellow LED geeks :)
learning blinkies for beginners, scan this
While I was there, I 9ound out they had a wonderful 4 bit computer some years back. I actually really regret not having been there that year, programming that in hand crafted assembly would have been epic:
someone hacked a basic I2C on it
people now hard at work
I used the opportunity to bring previous LCA toys and show them off (and fix a few)
Also, finally got to meet Henner Zeller, the rpi-rgb-panels author I've been working online with for years:
epic watch!
Also got to meet Daryll Strauss from precision insight, later acquired by VA Linux some 25+ years ago:
People still hacking at night:
I was lit up enough not to get lost :)
Day 2-3, Saturday & Sunday
Saturday and Sunday were the main conference days:
went to attend a few talks
hacking radio sound and B&W video from a chip, super cool!
learned about an online microcontroller emulator, wokwi, very nice
I got to see a pick and place machine, nice to see them work:
this is what the machine was 'printing'
I tried the SMD challenge, that was hard as hell:
we got old and fat irons, making things harder :)
I couldn't get the last 2 LEDs working, they were so stupidly small
I had someone help me fix mine :)
and they all worked, thank you to the master solderer!
added the result on my badge :)
Random fun shots :)
people hard at work
During the weekend, the SAO wall got populated:
Fun to see this SAO based on this burning man sign
Original from Burning Man
more and more
and more :)
Saturday evening party had a nice real time AI image generator:
some were far out :)
The conf ended with a presentation of best SAOs:
This guy won the contest of biggest SAO, he had a printer working off USB, run by his SAO
Sunday ended with a party at a bar, thankfully I had my battery soldering iron :)
This was loads of fun, and I definitely learned some good stuff. Sad I didn't go earlier but glad I went this year. Thanks bunch to all the organizers and attendeers who contributed!
More pictures: https://photos.app.goo.gl/2hYRaaB5dF5mvv4N8
The trip happened late in the season, but just before the first round of storms, so it worked out just fine. We were even lucky to have a nearby storm front that brought warmer air, making nights above freezing, which was nice.
It was a not too long drive to the trailhead which by this time of the season was pretty empty:
had to find the correct forrest roads to get there
Campground was closed by that time of the season
Quick picture at the levy by trailhead
Day #1
After that, time to go:
We made good time and got to camp 1H before sunset and look at the stars:
Day #2
I used the opportunity to learn how to setup my fenix 7 for hiking
it was late in the season, lakes were pretty dry
lake was split in two
cool to see the age rings on the fallen tree
the day was pretty sedate, 10.5 miles in 7h, only 1500ft of climbing
tried to find a campsite that wasn't too windy
found a good spot
Day #3
The night was not that cold, we got lucky, and a nice sunrise the next day:
Maker Faire came back but it's not really in the bay area anymore, Mare Island is honestly closer to Sacramento than it is from the South Bay. It's a bad location in my opinion, and I hope they come back to something more central to the bay, but we'll see.
That said I was driving back from Tahoe, so that remote location was on the way home and stopping there wasn't terrible. We arrived almost at opening time, but with offsite parking and bussing in, it did burn about 30mn. not ideal but we arrived in eventually:
Finally at the entrance:
It was nice to be in time for Adam Savage from mythbusters:
still has the passion
Fun to see coke and mentos again too:
The dark room was a fun time:
The LED Piano was great to see again:
I also loved the cuttlefish art car from burning man:
Plenty of other expos:
cool hat
electromage
oh my, I had one of those when I grew up
oh, I need one of those
how does it even? :)
cool idea :)
For some reason they also had cars:
This was fun enough, but the new location is not great, I hope they change it back to the middle of the bay area, I don't care if it has to cost more as a result.