diff --git a/mlt/wpan-ipv4/README b/mlt/wpan-ipv4/README new file mode 100644 index 0000000..9242fcf --- /dev/null +++ b/mlt/wpan-ipv4/README @@ -0,0 +1,50 @@ +Demo setup +---------- + +Two Ben NanoNotes. We'll call them ben1 and ben2. Each has an atben +board and the usual software stack (WPAN-enabled kernel with TUN, +lowpan-tools, and ben-wpan's dirtpan.) + +scp ben1 ben1.rmt pex ben1: +scp ben2 pex ben2: + +ben1: + rm -f lease + ./ben1 + +ben2: + ./ben2 + + +Audio and video editing +----------------------- + +Prerequisites: + + melt 0.5.4 or better (from MLT) + sox + mplayer or equivalent + +# Raw files: the original video recording and and audio track. +# Warning: these files are big. 327 MB for the video, 39 MB for the audio. + +wget http://downloads.qi-hardware.com/people/werner/wpan/tmp/raw/MVI_1374.MOV +wget http://downloads.qi-hardware.com/people/werner/wpan/tmp/raw/p97-3.wav + +# Adjust the speed of the audio track to match the video clip. +# Also reduce the bass a little, to avoid clipping. +# Takes about 335 s on a Q6600 + +sox p97-3.wav p97-3fast.wav speed 1.005 bass -3 + +# Edit the video clip and encode as Theora. +# Takes about 5 min on q Q6600 + +./edit | sh + +# Play the resulting 18 MB, 209 s video + +mplayer wpan-ipv4.ogg + +The result is on +http://downloads.qi-hardware.com/people/werner/wpan/tmp/wpan-ipv4.ogg diff --git a/mlt/wpan-ipv4/ben1 b/mlt/wpan-ipv4/ben1 new file mode 100755 index 0000000..7c9373b --- /dev/null +++ b/mlt/wpan-ipv4/ben1 @@ -0,0 +1,11 @@ +#!./pex +!dmesg -n 1 +!clear +iz add wpan-phy0 +ip link set wpan0 address ca:fe:ca:fe:ca:fe:ca:fe +ifconfig wpan0 up +izcoordinator -d 1 -l lease -i wpan0 -p 0x777 -s 1 -c 11 & + +dirtpan 777 1 8001 'ifconfig $ITF 10.0.0.1 dstaddr 10.0.0.2 up' + + diff --git a/mlt/wpan-ipv4/ben1.rmt b/mlt/wpan-ipv4/ben1.rmt new file mode 100755 index 0000000..5c1d0db --- /dev/null +++ b/mlt/wpan-ipv4/ben1.rmt @@ -0,0 +1,4 @@ +#!./pex +echo hello >/dev/tty0 +pstree +exit diff --git a/mlt/wpan-ipv4/ben2 b/mlt/wpan-ipv4/ben2 new file mode 100755 index 0000000..5f3861f --- /dev/null +++ b/mlt/wpan-ipv4/ben2 @@ -0,0 +1,14 @@ +#!./pex +!dmesg -n 1 +!clear +iz add wpan-phy0 +ip link set wpan0 address be:e2:be:e2:be:e2:be:e2 +ifconfig wpan0 up +iz assoc wpan0 777 1 11 short + +dirtpan 777 8001 1 'ifconfig $ITF 10.0.0.2 dstaddr 10.0.0.1 up' & +ping -c 10 10.0.0.1 +:ssh 10.0.0.1 +ssh -t 10.0.0.1 ./ben1.rmt + + diff --git a/mlt/wpan-ipv4/edit b/mlt/wpan-ipv4/edit new file mode 100755 index 0000000..1d0bc23 --- /dev/null +++ b/mlt/wpan-ipv4/edit @@ -0,0 +1,213 @@ +#!/bin/sh +# +# Edit the wpan-ipv4 demo clip +# +# Written 2011 by Werner Almesberger +# Copyright 2011 Werner Almesberger +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# + + +F=MVI_1374.MOV + +debug=false + +seg=1 +pos=0 + +seg() +{ + echo '' -video-track -blank $pos $F in=$1 out=$2 \\ + $debug && echo -attach watermark:+#$seg.txt \\ + start=$pos + pos=`expr $pos + $2 - $1` + end=$pos + seg=`expr $seg + 1` +} + + +say() +{ + echo '' -track -blank $1 pango text="\"$3\"" in=$1 out=$2 \\ + echo '' align=1 fgcolour=0xffffffff bgcolour=0x00000040 weight=400 \\ + echo '' -transition composite out=$end geometry=0%,50%:100%x10% \\ + echo '' halign=c a_track=0 \\ +} + + +overlay() +{ + echo '' -track -blank $1 pango text="\"$3\"" in=$1 out=$2 \\ + echo '' align=1 fgcolour=0x00000030 weight=600 \\ + echo '' -transition composite out=$end geometry=-1%,94%:100%x6% \\ + echo '' halign=r \\ + [ "$4" ] && echo a_track=$4 \\ +} + + +endtitle() +{ + echo '' -track -blank $1 pango text="\"$3\"" in=$1 out=$2 \\ + echo '' align=1 fgcolour=0x000000ff weight=600 \\ + echo '' -transition composite out=$end geometry=0%,50%:100%x10% \\ + echo '' halign=c a_track=$4 \\ +} + + +cmd() +{ + e=`expr $2 - 1` + echo '' -track -blank $1 pango text="\"$3\"" in=$1 out=$e \\ + echo '' align=1 fgcolour=0xffff40ff weight=600 \\ + echo '' -transition composite out=$end geometry=0%,83%:100%x7% \\ + echo '' halign=c a_track=0 \\ +} + + +explain() +{ + echo '' -track -blank $1 pango text="\"$3\"" in=$1 out=$2 \\ + echo '' align=1 fgcolour=0x000000ff bgcolour=0xc0c0ffc0 weight=400 \\ + echo '' -transition composite out=$end geometry=$4%,90%:100%x7% \\ + echo '' a_track=0 \\ +} + + +label() +{ + echo '' -track -blank $1 pango text="\"$3\"" in=$1 out=$2 \\ + echo '' align=1 fgcolour=0xff2020ff weight=600 \\ + echo '' -transition composite out=$end geometry=$4%,$5%:100%x10% \\ + echo '' a_track=0 \\ +} + + +echo melt \\ +echo colour:black out=50 \\ +seg 0 470 # 1 +echo '' -transition luma in=0 out=50 \\ + +echo '' -audio-track p97-3fast.wav in=60 \\ +# "resample" sux - do this in SOX +#echo '' -filter resample frequency=47000 \\ + +seg 486 517 # 2 +seg 712 1864 # 3 +seg 1897 2785 # 4 +seg 2874 3082 # 5 +seg 3164 3300 # 6 +seg 3450 3889 # 7 +seg 4019 4703 # 8 +seg 4764 5595 # 9 +seg 5731 6103 # 10 +seg 0 580 # filler + +echo '' -track -blank 5130 colour:white in=5130 out=5200 \\ +echo '' -transition luma in=5130 out=5200 a_track=0 \\ +echo '' -track -blank 5200 colour:white in=5200 out=5800 \\ +overlay 5200 5600 "2011 by Werner Almesberger, CC-BY-SA" + +endtitle 5250 5600 "THE BEGINNING" 13 + +overlay 10 100 "2011 by Werner Almesberger, CC-BY-SA" 0 +overlay 5150 5200 "2011 by Werner Almesberger, CC-BY-SA" 0 + +label 70 150 "ben1" 35 59 +label 110 150 "ben2" 63 66 +say 230 280 "We won't need that" +label 415 447 "OpenWRT" 20 51 + +cmd 487 620 "iz add wpan-phy0" +say 530 620 "Add WPAN interface" + +cmd 630 730 "ip link set wpan0 ..." +cmd 730 840 "... address ca:fe:ca:fe:ca:fe:ca:fe" +say 680 840 "Set MAC address" + +cmd 850 960 "ifconfig wpan0 up" +say 900 960 "Enable WPAN interface" + +cmd 970 1140 "izcoordinator -d 1 -l lease -i wpan0 ..." +explain 1020 1140 "Debug" 33 +explain 1040 1140 "Lease file" 48 +explain 1060 1140 "Interface" 70 +cmd 1140 1290 "... -p 0x777 -s 1 -c 11 &" +explain 1190 1290 "PAN" 35 +explain 1210 1290 "Self" 51 +explain 1230 1290 "Chan" 62 +explain 1250 1290 "Fork" 75 +say 1100 1290 "WPAN coordinator" + +label 1660 1710 "Jlime" 55 53 + +cmd 1770 1930 "iz add wpan-phy0" +say 1800 1930 "Add WPAN interface" + +cmd 1940 2040 "ip link set wpan0 ..." +cmd 2040 2170 "... address be:e2:be:e2:be:e2:b2:e2" +# don't explain the joke :-) +#cmd 2040 2140 "... address be:e2:be:e2:be:e2:b2:e2" +#cmd 2141 2170 "... address be:eR:be:eR:be:eR:be:eR" +say 2000 2170 "Set MAC address" + +cmd 2180 2277 "ifconfig wpan0 up" +say 2230 2277 "Enable WPAN interface" + +cmd 2280 2520 "iz assoc wpan0 777 1 11 short" +explain 2300 2370 "PAN" 52 +explain 2320 2370 "Coordinator" 62 +explain 2400 2520 "Chan" 58 +explain 2420 2520 "Short addr" 73 +say 2340 2520 "Get WPAN address" + +label 2550 2600 "<-- Request" 40 50 +label 2620 2670 "Response -->" 20 55 + +cmd 2780 2880 "Received short address 8001" + +say 2950 3040 "Set up IP tunnel" + +cmd 3000 3150 "dirtpan 777 1 8001 ifconfig ..." +explain 3050 3150 "PAN" 32 +explain 3070 3150 "Self" 41.2 +explain 3090 3150 "Peer" 50 +cmd 3150 3300 "... $ITF 10.0.0.1 dstaddr 10.0.0.2 up" +explain 3200 3300 "Local" 24 +explain 3220 3300 "Remote" 63 + +say 3330 3400 "The other end ..." +say 3410 3500 "... of the tunnel" + +cmd 3410 3550 "dirtpan 777 8001 1 ifconfig ..." +explain 3450 3550 "PAN" 33 +explain 3470 3550 "Self" 45.5 +explain 3490 3550 "Peer" 56 +cmd 3550 3700 "... $ITF 10.0.0.1 dstaddr 10.0.0.2 up" +explain 3600 3700 "Local" 24 +explain 3620 3700 "Remote" 63 + +cmd 3700 3960 "ping -c 10 10.0.0.1" +say 3750 3960 "Test the connection" + +cmd 4170 4380 "ssh 10.0.0.1" +cmd 4403 4470 "root@10.0.0.1 password:" + +cmd 4475 4605 "echo hello >/dev/tty0" +explain 4500 4605 "Console" 56 + +cmd 4770 4825 "hello" + +cmd 4870 4950 "pstree" + +cmd 4970 5070 "exit" + +if $debug; then + echo '' -consumer sdl audio_off=1 +else + echo '' -consumer avformat f=ogg vcodec=libtheora \\ + echo b=600k acodec=libvorbis '>wpan-ipv4.ogg' +fi diff --git a/mlt/wpan-ipv4/pex b/mlt/wpan-ipv4/pex new file mode 100755 index 0000000..bb1e5c3 --- /dev/null +++ b/mlt/wpan-ipv4/pex @@ -0,0 +1,23 @@ +#!/bin/sh +in=$1 +prompt="${1##*/}" +prompt="${prompt%.*}" +shift +{ + read c + while read c; do + if [ "${c#!}" != "$c" ]; then + eval "${c#!}" \033[1m$c\033[m " + read x