<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3594071261505311749</id><updated>2012-02-04T14:06:02.621-08:00</updated><title type='text'>Lunarlite</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8628361491011608675</id><published>2012-02-04T14:05:00.000-08:00</published><updated>2012-02-04T14:06:02.633-08:00</updated><title type='text'>Pulseaudio simple web interface (CGI/Perl)</title><content type='html'>Spending time banging my head against Ubuntu 11.10 due to a lack of consistency regarding lirc. The upshot of this is that we require a method to control PulseAudio volume from a webserver. Here is one way to do it. It provides mute/unmute and quiet/medium/loud volumes.&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://www.reversemidastouch.com/code/volume.zip"&gt;PulseAudio CGI Volume control&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are a few caveats - the webserver needs to run as the same user as the pulseaudio daemon. apache-mpm-itk is used to do this. It also is a sledgehammer to crack a nut. It is very basic. Other people might use it for nefarious purposes. I highly recommend setting Apache to only serve pages to localhost.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8628361491011608675?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8628361491011608675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8628361491011608675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8628361491011608675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8628361491011608675'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2012/02/pulseaudio-simple-web-interface-cgiperl.html' title='Pulseaudio simple web interface (CGI/Perl)'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-1894933202272086034</id><published>2011-12-01T01:58:00.000-08:00</published><updated>2011-12-01T01:58:33.071-08:00</updated><title type='text'>BT Infinity Re-profiling</title><content type='html'>Our Draytek 2750N has got a new VDSL profile (17a from 8c). This is probably in preparation for the 80Mb roll-out in the new year. It looks like we might be getting nearly 70Mb once they lift the cap.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 700px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="title"&gt;VDSL Status&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;hr size="1" /&gt;  &lt;div class="refreshbar"&gt;   &lt;label for="autorefresh"&gt;Auto-refresh&lt;/label&gt;    &lt;input checked="checked" id="autorefresh" name="autorefresh" type="checkbox" /&gt;        &lt;img alt="" id="update" src="http://192.168.1.1/images/updating.gif" style="visibility: hidden;" /&gt; &lt;/div&gt;&lt;table border="1" cellpadding="2" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td class="title" colspan="4" id="VDSL"&gt;VDSL&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head" id="ConnectStatus"&gt;Link Status &lt;/td&gt;   &lt;td id="link"&gt;Showtime&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head" id="Firmware"&gt;Firmware Version&lt;/td&gt;   &lt;td id="fw_ver"&gt;1411f0&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head" id="Profile"&gt; VDSL2 Profile&lt;/td&gt;   &lt;td id="vdsl_pro"&gt;17a&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="title"&gt;Basic Status&lt;/td&gt;&lt;td class="title"&gt;Upstream&lt;/td&gt;&lt;td class="title"&gt;Downstream&lt;/td&gt;&lt;td class="title"&gt;Unit&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Actual Data Rate&lt;/td&gt;   &lt;td id="up_data_rate"&gt;9999&lt;/td&gt; &lt;td id="down_data_rate"&gt;34984&lt;/td&gt; &lt;td&gt;Kb/s&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR&lt;/td&gt;   &lt;td id="up_snr"&gt;269&lt;/td&gt; &lt;td id="down_snr"&gt;176&lt;/td&gt; &lt;td&gt;0.1dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="title" id="VDSL_ADVANCE"&gt;Advance Status  &lt;/td&gt;&lt;td class="title"&gt;Upstream&lt;/td&gt;&lt;td class="title"&gt;Downstream&lt;/td&gt;&lt;td class="title"&gt;Unit&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Actual delay&lt;/td&gt;   &lt;td id="up_delay"&gt;0&lt;/td&gt; &lt;td id="down_delay"&gt;8&lt;/td&gt; &lt;td&gt;ms&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Actual INP&lt;/td&gt;   &lt;td id="up_inp"&gt;0&lt;/td&gt; &lt;td id="down_inp"&gt;30&lt;/td&gt; &lt;td&gt;0.1 symbols&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M CV&lt;/td&gt;   &lt;td id="up_mcv"&gt;0&lt;/td&gt; &lt;td id="down_mcv"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day CV&lt;/td&gt;   &lt;td id="up_dcv"&gt;0&lt;/td&gt; &lt;td id="down_dcv"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M FEC&lt;/td&gt;   &lt;td id="up_mfec"&gt;0&lt;/td&gt;&lt;td id="down_mfec"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day FEC&lt;/td&gt;   &lt;td id="up_dfec"&gt;0&lt;/td&gt; &lt;td id="down_dfec"&gt;21&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total FEC&lt;/td&gt;   &lt;td id="up_tfec"&gt;1&lt;/td&gt; &lt;td id="down_tfec"&gt;2633376&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Previous Data Rate&lt;/td&gt;   &lt;td id="up_prate"&gt;9998&lt;/td&gt; &lt;td id="down_prate"&gt;32396&lt;/td&gt; &lt;td&gt;Kbps&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Attainable Rate&lt;/td&gt;   &lt;td id="up_arate"&gt;23789&lt;/td&gt; &lt;td id="down_arate"&gt;68158&lt;/td&gt; &lt;td&gt;Kbps&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Electrical Length&lt;/td&gt;   &lt;td id="up_elen"&gt;37&lt;/td&gt; &lt;td id="down_elen"&gt;37&lt;/td&gt; &lt;td&gt;0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrm"&gt;270&lt;/td&gt; &lt;td id="down_snrm"&gt;  N/A  &lt;/td&gt; &lt;td&gt;(US0,--) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrma"&gt;269&lt;/td&gt; &lt;td id="down_snrma"&gt;176&lt;/td&gt; &lt;td&gt;(US1,DS1) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrb"&gt;269&lt;/td&gt; &lt;td id="down_snrb"&gt;177&lt;/td&gt; &lt;td&gt;(US2,DS2) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrc"&gt;N/A&lt;/td&gt; &lt;td id="down_snrc"&gt;176&lt;/td&gt; &lt;td&gt;(US3,DS3) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrd"&gt;N/A&lt;/td&gt; &lt;td id="down_snrd"&gt;N/A&lt;/td&gt; &lt;td&gt;(US4,DS4) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M Elapsed time&lt;/td&gt;   &lt;td id="up_etime"&gt;156&lt;/td&gt; &lt;td id="down_etime"&gt;156&lt;/td&gt; &lt;td&gt;secs&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M FECS&lt;/td&gt;   &lt;td id="up_fecs"&gt;0&lt;/td&gt; &lt;td id="down_fecs"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M ES&lt;/td&gt;   &lt;td id="up_mes"&gt;0&lt;/td&gt; &lt;td id="down_mes"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M SES&lt;/td&gt;   &lt;td id="up_mses"&gt;0&lt;/td&gt; &lt;td id="down_mses"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M LOSS&lt;/td&gt;   &lt;td id="up_mloss"&gt;0&lt;/td&gt; &lt;td id="down_mloss"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M UAS&lt;/td&gt;   &lt;td id="up_muas"&gt;0&lt;/td&gt; &lt;td id="down_muas"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day Elapsed time&lt;/td&gt;   &lt;td id="up_detime"&gt;10056&lt;/td&gt; &lt;td id="down_detime"&gt;10056&lt;/td&gt; &lt;td&gt;secs&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day FECS&lt;/td&gt;   &lt;td id="up_dfecs"&gt;0&lt;/td&gt; &lt;td id="down_dfecs"&gt;3&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day ES&lt;/td&gt;   &lt;td id="up_des"&gt;0&lt;/td&gt; &lt;td id="down_des"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day SES&lt;/td&gt;   &lt;td id="up_dses"&gt;0&lt;/td&gt; &lt;td id="down_dses"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day LOSS&lt;/td&gt;   &lt;td id="up_dloss"&gt;0&lt;/td&gt; &lt;td id="down_dloss"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day UAS&lt;/td&gt;   &lt;td id="up_duas"&gt;0&lt;/td&gt; &lt;td id="down_duas"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total FECS&lt;/td&gt;   &lt;td id="up_tfecs"&gt;1&lt;/td&gt; &lt;td id="down_tfecs"&gt;25337&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total ES&lt;/td&gt;   &lt;td id="up_tes"&gt;1&lt;/td&gt; &lt;td id="down_tes"&gt;13&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total SES&lt;/td&gt;   &lt;td id="up_tses"&gt;0&lt;/td&gt; &lt;td id="down_tses"&gt;27&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total LOSS&lt;/td&gt;   &lt;td id="up_tloss"&gt;0&lt;/td&gt; &lt;td id="down_tloss"&gt;30&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total UAS&lt;/td&gt;   &lt;td id="up_tuas"&gt;66&lt;/td&gt; &lt;td id="down_tuas"&gt;713&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-1894933202272086034?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/1894933202272086034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=1894933202272086034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1894933202272086034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1894933202272086034'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/12/bt-infinity-re-profiling.html' title='BT Infinity Re-profiling'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-680393576950527784</id><published>2011-10-04T05:26:00.000-07:00</published><updated>2011-10-04T05:26:12.371-07:00</updated><title type='text'>Ramsbottom dvbscan scan frequencies</title><content type='html'>Attached are the frequencies and channel list for the Ramsbottom (Grants Tower) Freeview dvb-t transmitter.&lt;br /&gt;&lt;br /&gt;Frequencies:&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# file automatically generated by w_scan&lt;br /&gt;# (http://wirbel.htpc-forum.de/w_scan/index2.html)&lt;br /&gt;#! &lt;w_scan&gt; 20110702 1 0 OFDM GB &lt;/w_scan&gt;&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# location and provider: Ramsbottom Grants Tower&lt;br /&gt;# date (yyyy-mm-dd)&amp;nbsp;&amp;nbsp;&amp;nbsp; : 2011-10-03&lt;br /&gt;# provided by (opt)&amp;nbsp;&amp;nbsp;&amp;nbsp; : tng&lt;br /&gt;#&lt;br /&gt;# T[2] &lt;freq&gt; &lt;bw&gt; &lt;fec_hi&gt; &lt;fec_lo&gt; &lt;mod&gt; &lt;tm&gt; &lt;guard&gt; &lt;hi&gt; [# comment]&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;T 490000000 8MHz AUTO AUTO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AUTO AUTO AUTO AUTO&lt;br /&gt;T 514000000 8MHz AUTO AUTO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AUTO AUTO AUTO AUTO&lt;br /&gt;T 746000000 8MHz&amp;nbsp; 2/3 NONE&amp;nbsp;&amp;nbsp;&amp;nbsp; QAM64&amp;nbsp;&amp;nbsp; 8k 1/32 NONE&lt;br /&gt;T 762000000 8MHz&amp;nbsp; 1/2 NONE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QPSK&amp;nbsp;&amp;nbsp; 8k 1/32 NONE&lt;br /&gt;T 801833000 8MHz&amp;nbsp; 2/3 NONE&amp;nbsp;&amp;nbsp;&amp;nbsp; QAM64&amp;nbsp;&amp;nbsp; 8k 1/32 NONE&lt;br /&gt;T 778000000 8MHz&amp;nbsp; 2/3 NONE&amp;nbsp;&amp;nbsp;&amp;nbsp; QAM64&amp;nbsp;&amp;nbsp; 8k 1/32 NONE&lt;br /&gt;T 770000000 8MHz&amp;nbsp; 2/3 NONE&amp;nbsp;&amp;nbsp;&amp;nbsp; QAM64&amp;nbsp;&amp;nbsp; 8k 1/32 NONE&lt;br /&gt;T 793833000 8MHz&amp;nbsp; 2/3 NONE&amp;nbsp;&amp;nbsp;&amp;nbsp; QAM64&amp;nbsp;&amp;nbsp; 8k 1/32 NONE&lt;br /&gt;T 730000000 8MHz AUTO AUTO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AUTO AUTO AUTO AUTO&amp;nbsp;&amp;nbsp;&amp;nbsp; # North West&lt;br /&gt;T 786000000 8MHz AUTO AUTO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AUTO AUTO AUTO AUTO&amp;nbsp;&amp;nbsp;&amp;nbsp; # North West&lt;/hi&gt;&lt;/guard&gt;&lt;/tm&gt;&lt;/mod&gt;&lt;/fec_lo&gt;&lt;/fec_hi&gt;&lt;/bw&gt;&lt;/freq&gt;&lt;br /&gt;&lt;br /&gt;Channel list:&lt;br /&gt;BBCONE:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERAR&lt;br /&gt;CHY_AUTO:101:102:4168&lt;br /&gt;BBCTWO:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERAR&lt;br /&gt;CHY_AUTO:201:202:4287&lt;br /&gt;BBCTHREE:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIER&lt;br /&gt;ARCHY_AUTO:301:302:4288&lt;br /&gt;BBCNEWS:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERA&lt;br /&gt;RCHY_AUTO:501:502:4352&lt;br /&gt;BBCRedButton:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO&lt;br /&gt;:HIERARCHY_AUTO:0:0:4416&lt;br /&gt;BBCFOUR:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERA&lt;br /&gt;RCHY_AUTO:401:402:4544&lt;br /&gt;CBBCChannel:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:H&lt;br /&gt;IERARCHY_AUTO:0:0:4608&lt;br /&gt;CBeebies:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERA&lt;br /&gt;RCHY_AUTO:0:0:4672&lt;br /&gt;BBCParliament:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO&lt;br /&gt;:HIERARCHY_AUTO:601:602:4736&lt;br /&gt;BBCR5L:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERAR&lt;br /&gt;CHY_AUTO:0:1402:5632&lt;br /&gt;BBCR5SX:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERA&lt;br /&gt;RCHY_AUTO:0:1502:5696&lt;br /&gt;BBC6Music:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HI&lt;br /&gt;ERARCHY_AUTO:0:1602:5760&lt;br /&gt;BBCRadio4Ex:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO&lt;br /&gt;:HIERARCHY_AUTO:0:1702:5824&lt;br /&gt;BBCR1X:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERAR&lt;br /&gt;CHY_AUTO:0:1802:5888&lt;br /&gt;BBCAsianNet.:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO&lt;br /&gt;:HIERARCHY_AUTO:0:1902:5952&lt;br /&gt;BBCWorldSv.:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:&lt;br /&gt;HIERARCHY_AUTO:0:2002:6016&lt;br /&gt;BBCRadio1:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HI&lt;br /&gt;ERARCHY_AUTO:0:1002:6720&lt;br /&gt;BBCRadio2:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HI&lt;br /&gt;ERARCHY_AUTO:0:1102:6784&lt;br /&gt;BBCRadio3:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HI&lt;br /&gt;ERARCHY_AUTO:0:1202:6848&lt;br /&gt;BBCRadio4:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HI&lt;br /&gt;ERARCHY_AUTO:0:1302:6912&lt;br /&gt;301:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_&lt;br /&gt;AUTO:901:951:7168&lt;br /&gt;ITV1:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY&lt;br /&gt;_AUTO:515:654:8267&lt;br /&gt;ITV2:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY&lt;br /&gt;_AUTO:2819:2820:8325&lt;br /&gt;Rabbit:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARC&lt;br /&gt;HY_AUTO:0:0:8637&lt;br /&gt;Channel4:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIER&lt;br /&gt;ARCHY_AUTO:2829:2830:8384&lt;br /&gt;Channel4+1:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HI&lt;br /&gt;ERARCHY_AUTO:768:769:8452&lt;br /&gt;E4:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_A&lt;br /&gt;UTO:773:774:8448&lt;br /&gt;More4:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARC&lt;br /&gt;HY_AUTO:590:591:8442&lt;br /&gt;GayRabbit:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIE&lt;br /&gt;RARCHY_AUTO:0:0:8577&lt;br /&gt;Channel5:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIER&lt;br /&gt;ARCHY_AUTO:2950:2851:8500&lt;br /&gt;ITV1+1:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERAR&lt;br /&gt;CHY_AUTO:600:601:8367&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-680393576950527784?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/680393576950527784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=680393576950527784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/680393576950527784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/680393576950527784'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/10/ramsbottom-dvbscan-scan-frequencies.html' title='Ramsbottom dvbscan scan frequencies'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-3059649240440666714</id><published>2011-09-18T04:03:00.000-07:00</published><updated>2011-09-18T04:03:29.279-07:00</updated><title type='text'>Netboot 2.6 Kernels with gPXE/Etherboot and BOOTP</title><content type='html'>&lt;span style="font-size: large;"&gt;When you can't use ISC dhcpd and pxelinux for Netbooting Diskless clients.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #b6d7a8;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;NEWSCHOOL METHOD:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;http://www.fefe.de/netboot/how-to-netboot-installer.html&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;Here's my ISC dhcpd configuration for booting a laptop at home:&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;host thinksen {&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;filename "/tftpboot/debian/pxelinux.0";&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;server-name "danny";&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;next-server servername;&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;hardware ethernet 00:11:25:5C:E4:EB;&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;fixed-address 192.168.1.169;&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;}&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;tng@danny:/tftpboot/debian$ ls&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;debian-6.0.2.1-i386-netinst.iso  mini.iso        pxelinux.0    version.info&lt;/div&gt;&lt;div style="background-color: #b6d7a8;"&gt;debian-installer                 netboot.tar.gz  pxelinux.cfg&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;OLDSCHOOL METHOD&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;However, sometimes bootpd is already installed and a moving everything over the dhcpd just isn't the way to do things. We need to work with what is already installed and used and understood. In this case a new kernel was required for newer hardware.&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;Building a kernel is well understood, but there are a few options that need to be set. You can either build a monolithic kernel or a kernel with an initial ramdisk. If you are building an initial ramdisk, then make a new directory&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;# cp -rp /etc/initramfs-tools /etc/initramfs-tools-nfsroot&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;# Edit /etc/initramfs-tools-nfs/initramfs.conf&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;MODULES=netboot&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;BUSYBOX=y&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;COMPCACHE_SIZE=""&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;BOOT=nfs&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;DEVICE=eth0&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;NFSROOT=danny:/netboot_home&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;Build a kernel and a Ramdisk&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;#mkinitramfs -d /etc/initramfs-tools-nfsroot -o initrd.img-2.x.yz.abnfs 2.x.yz.abnfs&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;(Where 2.x.yz.abnfs is the name of the kernel and the modules directory in /lib/modules/)&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;The usual procedure having got a kernel and an initrd.img is to build a wrapped image. This contains the extra information that the gPXE/Etherboot Kernel needs and any optional arguments. Now the usual procedure for etherboot is to use mkelf-linux, but 2.6 kernels are *not* supported. Sometimes they boot and say ok at the end of the tftp but don't load into Memory. Sometimes they crap out during the tftp load .......&lt;/div&gt;&lt;br /&gt;The only workaround for these errors is to use wraplinux which needs downloading from ftp.kernel.org (which is currently down due to break-ins) - pub/linux/utils/boot/wraplinux. This information is hidden in the etherboot documentation, but the etherboot manual shows up before the wiki:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #ea9999;"&gt;&lt;b&gt;OLD INFORMATION&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: #ea9999;"&gt;http://www.etherboot.org/doc50/html/userman-4.html&lt;/div&gt;&lt;br /&gt;&lt;div style="background-color: #b6d7a8;"&gt;&lt;b&gt;NEW INFORMATION&lt;/b&gt;&lt;/div&gt;&lt;span style="background-color: #b6d7a8;"&gt;http://etherboot.org/wiki/doc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://www.mirrorservice.org/sites/ftp.kernel.org/pub/linux/utils/boot/wraplinux/&lt;br /&gt;&lt;br /&gt;Build it as usual: extract the tarball, configure; make; make install&lt;br /&gt;&lt;br /&gt;# wraplinux -p 'ip=bootp root=/dev/nfs rw nfsroot=danny:/netboot_home' -i initrd.img-2.x.yz.abnfs -o ./gpxe-vmlinuz bzImage-2.x.yz.abnfs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alternatively, it is possible to build a monolithic Kernel&lt;br /&gt;&lt;br /&gt;The following options need enabling:&lt;br /&gt;&lt;br /&gt;#Kernel configuration-&amp;gt;#Networking Support-&amp;gt;#Networking Options&lt;br /&gt;[*] IP: Kernel level autoconfiguration&lt;br /&gt;[*] IP: DHCP Support&lt;br /&gt;[*] IP: BOOTP Support&lt;br /&gt;&lt;br /&gt;#File Systems-&amp;gt;#Network File Systems&lt;br /&gt;[*] Root Filesystem on NFS&lt;br /&gt;&lt;br /&gt;# wraplinux -p 'ip=bootp root=/dev/nfs rw nfsroot=danny:/netboot_home' -o ./gpxe-vmlinuz bzImage-2.x.yz.abnfs&lt;br /&gt;&lt;br /&gt;Copy the kernel to the bootp server, edit the /etc/bootptab to suit and then boot off your gPXE.iso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-3059649240440666714?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/3059649240440666714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=3059649240440666714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3059649240440666714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3059649240440666714'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/09/netboot-26-kernels-with-gpxeetherboot.html' title='Netboot 2.6 Kernels with gPXE/Etherboot and BOOTP'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-9157000652606499100</id><published>2011-09-17T14:24:00.000-07:00</published><updated>2011-09-18T02:59:57.532-07:00</updated><title type='text'>5 Leaves Left</title><content type='html'>Rolling a fat one (kernels)&lt;br /&gt;&lt;br /&gt;It's been 5 years since I've had to roll my own kernel and things have changed. I've always viewed ramdisks as somewhat of a dark art, but they appear to be highly configurable. I was just too lazy/in too much of a hurry in the past to find out how they were built.&lt;br /&gt;&lt;br /&gt;So, download the source from www.kernel.org (or mirrorservice.org for our UK based viewers).&lt;br /&gt;&lt;br /&gt;Unpack into /usr/src as per normal and make the symlink&lt;br /&gt;&lt;br /&gt;# cd /usr/src&lt;br /&gt;# ln -s linux-2.x.yz.ab linux&lt;br /&gt;# cd linux&lt;br /&gt;&lt;br /&gt;Copy the appropriate config file from wherever you want /boot/config* is a good first stab. &lt;br /&gt;# cp config-2.x.yz.ab-generic .config&lt;br /&gt;&lt;br /&gt;Edit the Makefile and add your appropriate Extraversion&lt;br /&gt;&lt;br /&gt;FROM:&lt;br /&gt;&lt;br /&gt;VERSION = 2&lt;br /&gt;PATCHLEVEL = x&lt;br /&gt;SUBLEVEL = yz&lt;br /&gt;EXTRAVERSION = .ab-generic&lt;br /&gt;NAME = Flesh-Eating Bats with Fangs&lt;br /&gt;&lt;br /&gt;TO:&lt;br /&gt;&lt;br /&gt;VERSION = 2&lt;br /&gt;PATCHLEVEL = x&lt;br /&gt;SUBLEVEL = yz&lt;br /&gt;EXTRAVERSION = .ab-tb1&lt;br /&gt;NAME = Flesh-Eating Bats with Fangs&lt;br /&gt;&lt;br /&gt;Time to update the config. oldconfig saves time as it just builds/converts and makes sensible decisions for you. make config is for the hardcore.&lt;br /&gt;&lt;br /&gt;# make oldconfig&lt;br /&gt;# make menuconfig&lt;br /&gt;Tweak as necessary.&lt;br /&gt;Copy .config config-2.x.yz.ab-tb1&lt;br /&gt;&lt;br /&gt;If you want to build a Debian package, then the easiest way is:&lt;br /&gt;# make-kpkg kernel_image --append-to-version tommybobbins1&lt;br /&gt;&lt;br /&gt;Slightly oddly make-kpkg doesn't make the initrd.img correctly (as far as I could see- loads of people reporting errors, but only hacks to fix it). I decided to roll my own as I was determined to understand exactly what I needed to get it to boot. Also Automagic grub editing on roll your own kernels gives me the heeby-jeebies.&lt;br /&gt;&lt;br /&gt;If you like to roll and deploy old school:&lt;br /&gt;&lt;br /&gt;# make bzImage; make modules; make modules_install&lt;br /&gt;&lt;br /&gt;Now you need a Ramdisk. Now there is a clever little directory which is called /etc/initramfs-tools. You need to understand this directory quite well - modules and initramfs.conf being very important.&lt;br /&gt;&lt;br /&gt;I made my own copy of this directory as I had particular needs (needed to make sure the SATA drivers were loaded into the Ramdisk) so I created /etc/initramfs-tools-custom and then added to /etc/initramfs-tools-custom/modules&lt;br /&gt;&lt;br /&gt;# List of modules that you want to include in your initramfs.&lt;br /&gt;#&lt;br /&gt;# Syntax:  module_name [args ...]&lt;br /&gt;#&lt;br /&gt;# You must run update-initramfs(8) to effect this change.&lt;br /&gt;#&lt;br /&gt;# Examples:&lt;br /&gt;#&lt;br /&gt;# raid1&lt;br /&gt;# sd_mod&lt;br /&gt;ahci&lt;br /&gt;usbhid&lt;br /&gt;&lt;br /&gt;Now it's time to create our Ramdisk:&lt;br /&gt;&lt;br /&gt;# mkinitramfs -d /etc/initramfs-tools-custom -o initrd.img-2.x.yz.ab-tb1 2.x.yz.ab-tb1&lt;br /&gt;&lt;br /&gt;Gather all the needed files&lt;br /&gt;# mkdir /home/tommybobbins/Desktop/DEPLOY_KERNEL/&lt;br /&gt;# cp /usr/src/linux/System.map /home/tommybobbins/Desktop/DEPLOY_KERNEL/System.map-2.x.yz.ab-tb1&lt;br /&gt;# cp initrd.img-2.x.yz.ab-tb1 /home/tommybobbins/Desktop/DEPLOY_KERNEL&lt;br /&gt;# cp /usr/src/linux/arch/i386/boot/bzImage /home/tommybobbins/Desktop/DEPLOY_KERNEL/vmlinuz-2.x.yz.ab-tb1&lt;br /&gt;# zip -r /home/tommybobbins/Desktop/DEPLOY_KERNEL/modules.zip /lib/modules/2.x.yz.ab-tb1/&lt;br /&gt;&lt;br /&gt;Obviously, the System.map, the Kernel and the Ramdisk need to end up in /boot and the modules need to end up in /lib/modules/2.x.yz.ab-tb1&lt;br /&gt;&lt;br /&gt;If using Grub &lt;2 and assuming your root filesystem is on /dev/sda1 then edit /boot/grub/menu.lst and add the following:&lt;br /&gt;&lt;br /&gt;title  TEST&lt;br /&gt;root  (hd1,0)&lt;br /&gt;kernel  /vmlinuz-2.x.yz.ab-tb1 root=/dev/sda1 ro&lt;br /&gt;initrd  /initrd.img-2.x.yz.ab-tb1&lt;br /&gt;quiet&lt;br /&gt;&lt;br /&gt;Save and then run grub-install&lt;br /&gt;&lt;br /&gt;# /usr/sbin/grub-install /dev/sda&lt;br /&gt;&lt;br /&gt;If using GRUB2, then please see here:&lt;br /&gt;http://ubuntuforums.org/showthread.php?t=1195275&lt;br /&gt;&lt;br /&gt;Next post about Netbooting, gPXE's epicness and making monolithic kernels (and when did monolithic kernels go from floppy sized to 4MB?).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-9157000652606499100?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/9157000652606499100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=9157000652606499100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/9157000652606499100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/9157000652606499100'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/09/5-leaves-left.html' title='5 Leaves Left'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8237050014312360898</id><published>2011-09-07T11:04:00.000-07:00</published><updated>2011-09-07T11:04:43.079-07:00</updated><title type='text'>Draytek 2750n and profile drop</title><content type='html'>After a month of using the 2750N, I discovered that my profile had been capped at 31750Kbit/s. &lt;a href="http://speedtester.bt.com/"&gt;http://speedtester.bt.com/&lt;/a&gt; Looking through the logs, I could see a lot of disconnections not caused by anything at my end (no changes made and nothing odd happening on the LAN), but the PPP link kept being terminated:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Aug 19 11:13:22 192.168.1.1 pppd[10704]: No response to 5 echo-requests&lt;br /&gt;Aug 19 11:13:22 192.168.1.1 pppd[10704]: Serial link appears to be disconnected.&lt;br /&gt;Aug 19 11:13:22 192.168.1.1 pppd[10704]: Connect time 0.7 minutes.&lt;br /&gt;Aug 19 11:13:22 192.168.1.1 pppd[10704]: Sent 666 bytes, received 328 bytes.&lt;br /&gt;Aug 19 11:13:23 192.168.1.1 root: revert uci network state in ip-down...&lt;br /&gt;Aug 19 11:13:25 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:13:26 192.168.1.1 root: stopping ntpclient&lt;br /&gt;Aug 19 11:13:27 192.168.1.1 pppd[10704]: Terminating on signal 15&lt;br /&gt;Aug 19 11:13:29 192.168.1.1 pppd[12063]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:13:29 192.168.1.1 pppd[12064]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:13:30 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:13:30 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:13:30 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:13:30 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:13:30 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:13:32 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:13:45 192.168.1.1 pppd[12064]: Timeout waiting for PADS packets&lt;br /&gt;Aug 19 11:13:45 192.168.1.1 pppd[12064]: Unable to complete PPPoE Discovery&lt;br /&gt;Aug 19 11:14:17 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:14:19 192.168.1.1 : 12064 root         0 Z    [pppd]&lt;br /&gt;Aug 19 11:14:19 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:14:20 192.168.1.1 pppd[13050]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:14:20 192.168.1.1 pppd[13051]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:14:20 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:14:22 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:14:22 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:14:22 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:14:22 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:14:35 192.168.1.1 pppd[13051]: Timeout waiting for PADS packets&lt;br /&gt;Aug 19 11:14:35 192.168.1.1 pppd[13051]: Unable to complete PPPoE Discovery&lt;br /&gt;Aug 19 11:15:10 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:15:10 192.168.1.1 pppd[13051]: PPP session is 1159&lt;br /&gt;Aug 19 11:15:10 192.168.1.1 pppd[13051]: hnat_patch_fn /tmp/pppoe.info/eth1.101&lt;br /&gt;Aug 19 11:15:10 192.168.1.1 pppd[13051]: Using interface ppp0&lt;br /&gt;Aug 19 11:15:10 192.168.1.1 pppd[13051]: Connect: ppp0 &lt;--&gt; eth1.101&lt;br /&gt;Aug 19 11:15:10 192.168.1.1 pppd[13051]: Terminating on signal 15&lt;br /&gt;Aug 19 11:15:10 192.168.1.1 kernel: register netdev : ppp0#015&lt;br /&gt;Aug 19 11:15:12 192.168.1.1 : 13051 root         0 Z    [pppd]&lt;br /&gt;Aug 19 11:15:12 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:15:13 192.168.1.1 pppd[14092]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:15:13 192.168.1.1 pppd[14093]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:15:13 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:15:14 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:15:14 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:15:14 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:15:14 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:15:28 192.168.1.1 pppd[14093]: Timeout waiting for PADS packets&lt;br /&gt;Aug 19 11:15:28 192.168.1.1 pppd[14093]: Unable to complete PPPoE Discovery&lt;br /&gt;Aug 19 11:16:03 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:16:05 192.168.1.1 : 14093 root         0 Z    [pppd]&lt;br /&gt;Aug 19 11:16:05 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:16:06 192.168.1.1 pppd[15129]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:16:06 192.168.1.1 pppd[15130]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:16:06 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:16:08 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:16:08 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:16:08 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:16:08 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:16:21 192.168.1.1 pppd[15130]: Timeout waiting for PADO packets&lt;br /&gt;Aug 19 11:16:21 192.168.1.1 pppd[15130]: Unable to complete PPPoE Discovery&lt;br /&gt;Aug 19 11:16:56 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:16:58 192.168.1.1 : 15130 root         0 Z    [pppd]&lt;br /&gt;Aug 19 11:16:58 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16174]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: PPP session is 1166&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: hnat_patch_fn /tmp/pppoe.info/eth1.101&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: Using interface ppp0&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: Connect: ppp0 &lt;--&gt; eth1.101&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 kernel: register netdev : ppp0#015&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: CHAP authentication succeeded: CHAP authentication success, unit 12646&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: CHAP authentication succeeded&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: peer from calling number aa:bb:cc:dd:ee:ff:gg:hh authorized&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: local  IP address 1.2.3.4&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: remote IP address 217.32.142.3&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: primary   DNS address 194.72.9.38&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 pppd[16175]: secondary DNS address 62.6.40.162&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 dnsmasq[2044]: using nameserver 62.6.40.162#53&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 dnsmasq[2044]: using nameserver 194.72.9.38#53&lt;br /&gt;Aug 19 11:16:59 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:17:01 192.168.1.1 firewall: Restart user's custom iptables rules&lt;br /&gt;Aug 19 11:17:05 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:17:08 192.168.1.1 kernel: gvid = 2 0x1 gvid 16= 40000&lt;br /&gt;Aug 19 11:17:08 192.168.1.1 kernel: gvid = 2 (gvid&amp;0xFF)  16= 20000&lt;br /&gt;Aug 19 11:17:09 192.168.1.1 syslog: Required parameters missing, make sure that username and password are given&lt;br /&gt;Aug 19 11:17:13 192.168.1.1 miniupnpd: removing firewall rules for ppp0 from zone wan&lt;br /&gt;Aug 19 11:17:13 192.168.1.1 miniupnpd: adding firewall rules for ppp0 to zone wan&lt;br /&gt;Aug 19 11:17:23 192.168.1.1 root: starting ntpclient&lt;br /&gt;Aug 19 11:17:28 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:19:28 192.168.1.1 pppd[16175]: No response to 5 echo-requests&lt;br /&gt;Aug 19 11:19:28 192.168.1.1 pppd[16175]: Serial link appears to be disconnected.&lt;br /&gt;Aug 19 11:19:28 192.168.1.1 pppd[16175]: Connect time 2.5 minutes.&lt;br /&gt;Aug 19 11:19:28 192.168.1.1 pppd[16175]: Sent 1946 bytes, received 872 bytes.&lt;br /&gt;Aug 19 11:19:28 192.168.1.1 root: revert uci network state in ip-down...&lt;br /&gt;Aug 19 11:19:30 192.168.1.1 syslog: [WAN] WAN detection success...ifup wan&lt;br /&gt;Aug 19 11:19:31 192.168.1.1 pppd[16175]: Connection terminated.&lt;br /&gt;Aug 19 11:19:32 192.168.1.1 : 16175 root      1308 S    /usr/sbin/pppd plugin rp-pppoe.so mtu 1442 mru 1442 n&lt;br /&gt;Aug 19 11:19:32 192.168.1.1 root: stopping ntpclient&lt;br /&gt;Aug 19 11:19:32 192.168.1.1 pppd[16175]: Terminating on signal 15&lt;br /&gt;Aug 19 11:19:32 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:19:33 192.168.1.1 pppd[19613]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:19:33 192.168.1.1 pppd[19614]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:19:33 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:19:33 192.168.1.1 pppd[19614]: PPP session is 1170&lt;br /&gt;Aug 19 11:19:33 192.168.1.1 pppd[19614]: hnat_patch_fn /tmp/pppoe.info/eth1.101&lt;br /&gt;Aug 19 11:19:33 192.168.1.1 kernel: register netdev : ppp0#015&lt;br /&gt;Aug 19 11:19:33 192.168.1.1 pppd[19614]: Using interface ppp0&lt;br /&gt;Aug 19 11:19:33 192.168.1.1 pppd[19614]: Connect: ppp0 &lt;--&gt; eth1.101&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 pppd[19614]: CHAP authentication succeeded: CHAP authentication success, unit 2731&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 pppd[19614]: CHAP authentication succeeded&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 pppd[19614]: peer from calling number aa:bb:cc:dd:ee:ff:gg:hh authorized&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 pppd[19614]: local  IP address 1.2.3.4&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 pppd[19614]: remote IP address 217.32.142.3&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 pppd[19614]: primary   DNS address 194.72.9.38&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 pppd[19614]: secondary DNS address 62.6.40.162&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 dnsmasq[2044]: using nameserver 62.6.40.162#53&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 dnsmasq[2044]: using nameserver 194.72.9.38#53&lt;br /&gt;Aug 19 11:19:34 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:19:36 192.168.1.1 firewall: Restart user's custom iptables rules&lt;br /&gt;Aug 19 11:19:37 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:19:38 192.168.1.1 pppd[16175]: Exit.&lt;br /&gt;Aug 19 11:19:40 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:19:42 192.168.1.1 kernel: gvid = 2 0x1 gvid 16= 40000&lt;br /&gt;Aug 19 11:19:42 192.168.1.1 kernel: gvid = 2 (gvid&amp;0xFF)  16= 20000&lt;br /&gt;Aug 19 11:19:44 192.168.1.1 syslog: Required parameters missing, make sure that username and password are given&lt;br /&gt;Aug 19 11:19:47 192.168.1.1 miniupnpd: removing firewall rules for ppp0 from zone wan&lt;br /&gt;Aug 19 11:19:48 192.168.1.1 miniupnpd: adding firewall rules for ppp0 to zone wan&lt;br /&gt;Aug 19 11:20:30 192.168.1.1 pppd[19614]: No response to 5 echo-requests&lt;br /&gt;Aug 19 11:20:30 192.168.1.1 pppd[19614]: Serial link appears to be disconnected.&lt;br /&gt;Aug 19 11:20:30 192.168.1.1 pppd[19614]: Connect time 1.0 minutes.&lt;br /&gt;Aug 19 11:20:30 192.168.1.1 pppd[19614]: Sent 14187 bytes, received 31492 bytes.&lt;br /&gt;Aug 19 11:20:31 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:20:32 192.168.1.1 pppd[19614]: Terminating on signal 15&lt;br /&gt;Aug 19 11:20:35 192.168.1.1 pppd[21238]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:20:35 192.168.1.1 pppd[21242]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:20:35 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:20:37 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:20:37 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:20:37 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:20:37 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:20:50 192.168.1.1 pppd[21242]: Timeout waiting for PADO packets&lt;br /&gt;Aug 19 11:20:50 192.168.1.1 pppd[21242]: Unable to complete PPPoE Discovery&lt;br /&gt;Aug 19 11:21:20 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:21:22 192.168.1.1 : 21242 root         0 Z    [pppd]&lt;br /&gt;Aug 19 11:21:22 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:21:23 192.168.1.1 pppd[22217]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:21:23 192.168.1.1 pppd[22218]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:21:23 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:21:24 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:21:24 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:21:24 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:21:24 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: PPP session is 1195&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: hnat_patch_fn /tmp/pppoe.info/eth1.101&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: Using interface ppp0&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 kernel: register netdev : ppp0#015&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: Connect: ppp0 &lt;--&gt; eth1.101&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: CHAP authentication succeeded: CHAP authentication success, unit 15087&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: CHAP authentication succeeded&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: peer from calling number aa:bb:cc:dd:ee:ff:gg:hh authorized&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: local  IP address 1.2.3.4&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: remote IP address 217.32.142.3&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 dnsmasq[2044]: using nameserver 62.6.40.162#53&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 dnsmasq[2044]: using nameserver 194.72.9.38#53&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: primary   DNS address 194.72.9.38&lt;br /&gt;Aug 19 11:21:29 192.168.1.1 pppd[22218]: secondary DNS address 62.6.40.162&lt;br /&gt;Aug 19 11:21:30 192.168.1.1 firewall: Restart user's custom iptables rules&lt;br /&gt;Aug 19 11:21:34 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:21:37 192.168.1.1 kernel: gvid = 2 0x1 gvid 16= 40000&lt;br /&gt;Aug 19 11:21:37 192.168.1.1 kernel: gvid = 2 (gvid&amp;0xFF)  16= 20000&lt;br /&gt;Aug 19 11:21:38 192.168.1.1 syslog: Required parameters missing, make sure that username and password are given&lt;br /&gt;Aug 19 11:21:42 192.168.1.1 miniupnpd: removing firewall rules for ppp0 from zone wan&lt;br /&gt;Aug 19 11:21:43 192.168.1.1 miniupnpd: adding firewall rules for ppp0 to zone wan&lt;br /&gt;Aug 19 11:21:47 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:23:12 192.168.1.1 pppd[22218]: No response to 5 echo-requests&lt;br /&gt;Aug 19 11:23:12 192.168.1.1 pppd[22218]: Serial link appears to be disconnected.&lt;br /&gt;Aug 19 11:23:12 192.168.1.1 pppd[22218]: Connect time 1.8 minutes.&lt;br /&gt;Aug 19 11:23:12 192.168.1.1 pppd[22218]: Sent 3031 bytes, received 3743 bytes.&lt;br /&gt;Aug 19 11:23:13 192.168.1.1 root: revert uci network state in ip-down...&lt;br /&gt;Aug 19 11:23:15 192.168.1.1 root: stopping ntpclient&lt;br /&gt;Aug 19 11:23:20 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:23:24 192.168.1.1 pppd[22218]: Connection terminated.&lt;br /&gt;Aug 19 11:23:24 192.168.1.1 pppd[22218]: Modem hangup&lt;br /&gt;Aug 19 11:23:31 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:23:32 192.168.1.1 : 22218 root      1308 S    /usr/sbin/pppd plugin rp-pppoe.so mtu 1442 mru 1442 n&lt;br /&gt;Aug 19 11:23:32 192.168.1.1 pppd[22218]: Terminating on signal 15&lt;br /&gt;Aug 19 11:23:32 192.168.1.1 pppd[22218]: Exit.&lt;br /&gt;Aug 19 11:23:32 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:23:34 192.168.1.1 pppd[25189]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:23:34 192.168.1.1 pppd[25190]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:23:34 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:23:34 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:23:34 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:23:34 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:23:34 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:23:49 192.168.1.1 pppd[25190]: Timeout waiting for PADS packets&lt;br /&gt;Aug 19 11:23:49 192.168.1.1 pppd[25190]: Unable to complete PPPoE Discovery&lt;br /&gt;Aug 19 11:24:25 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:24:26 192.168.1.1 : 25190 root         0 Z    [pppd]&lt;br /&gt;Aug 19 11:24:27 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:24:28 192.168.1.1 pppd[26244]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:24:28 192.168.1.1 pppd[26245]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:24:28 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:24:29 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:24:29 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:24:29 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:24:29 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:24:43 192.168.1.1 pppd[26245]: Timeout waiting for PADO packets&lt;br /&gt;Aug 19 11:24:43 192.168.1.1 pppd[26245]: Unable to complete PPPoE Discovery&lt;br /&gt;Aug 19 11:25:17 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:25:19 192.168.1.1 : 26245 root         0 Z    [pppd]&lt;br /&gt;Aug 19 11:25:19 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27285]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: PPP session is 1214&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: hnat_patch_fn /tmp/pppoe.info/eth1.101&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: Using interface ppp0&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: Connect: ppp0 &lt;--&gt; eth1.101&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 kernel: register netdev : ppp0#015&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: CHAP authentication succeeded: CHAP authentication success, unit 2685&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: CHAP authentication succeeded&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: peer from calling number aa:bb:cc:dd:ee:ff:gg:hh authorized&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: local  IP address 1.2.3.4&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: remote IP address 217.32.142.3&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: primary   DNS address 194.72.9.38&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 pppd[27286]: secondary DNS address 62.6.40.162&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 dnsmasq[2044]: using nameserver 62.6.40.162#53&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 dnsmasq[2044]: using nameserver 194.72.9.38#53&lt;br /&gt;Aug 19 11:25:21 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:25:23 192.168.1.1 firewall: Restart user's custom iptables rules&lt;br /&gt;Aug 19 11:25:27 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:25:30 192.168.1.1 kernel: gvid = 2 0x1 gvid 16= 40000&lt;br /&gt;Aug 19 11:25:30 192.168.1.1 kernel: gvid = 2 (gvid&amp;0xFF)  16= 20000&lt;br /&gt;Aug 19 11:25:31 192.168.1.1 syslog: Required parameters missing, make sure that username and password are given&lt;br /&gt;Aug 19 11:25:34 192.168.1.1 miniupnpd: removing firewall rules for ppp0 from zone wan&lt;br /&gt;Aug 19 11:25:35 192.168.1.1 miniupnpd: adding firewall rules for ppp0 to zone wan&lt;br /&gt;Aug 19 11:25:44 192.168.1.1 root: starting ntpclient&lt;br /&gt;Aug 19 11:25:50 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:27:25 192.168.1.1 pppd[27286]: No response to 5 echo-requests&lt;br /&gt;Aug 19 11:27:25 192.168.1.1 pppd[27286]: Serial link appears to be disconnected.&lt;br /&gt;Aug 19 11:27:25 192.168.1.1 pppd[27286]: Connect time 2.1 minutes.&lt;br /&gt;Aug 19 11:27:25 192.168.1.1 pppd[27286]: Sent 12694 bytes, received 13432 bytes.&lt;br /&gt;Aug 19 11:27:25 192.168.1.1 pppd[27286]: Connection terminated.&lt;br /&gt;Aug 19 11:27:26 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:27:26 192.168.1.1 root: revert uci network state in ip-down...&lt;br /&gt;Aug 19 11:27:28 192.168.1.1 : 27286 root      1308 S    /usr/sbin/pppd plugin rp-pppoe.so mtu 1442 mru 1442 n&lt;br /&gt;Aug 19 11:27:28 192.168.1.1 pppd[27286]: Terminating on signal 15&lt;br /&gt;Aug 19 11:27:28 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:27:30 192.168.1.1 dnsmasq[2044]: no servers found in /tmp/resolv.conf.auto, will retry&lt;br /&gt;Aug 19 11:27:30 192.168.1.1 pppd[30215]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 root: stopping ntpclient&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: PPP session is 186&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: hnat_patch_fn /tmp/pppoe.info/eth1.101&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 kernel: register netdev : ppp0#015&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: Using interface ppp0&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: Connect: ppp0 &lt;--&gt; eth1.101&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: CHAP authentication succeeded: CHAP authentication success, unit 14295&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: CHAP authentication succeeded&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: peer from calling number aa:bb:cc:dd:ee:ff:gg:hh authorized&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 dnsmasq[2044]: using nameserver 62.6.40.162#53&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 dnsmasq[2044]: using nameserver 194.72.9.38#53&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: local  IP address 1.2.3.4&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: remote IP address 217.32.142.3&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: primary   DNS address 194.72.9.38&lt;br /&gt;Aug 19 11:27:31 192.168.1.1 pppd[30223]: secondary DNS address 62.6.40.162&lt;br /&gt;Aug 19 11:27:33 192.168.1.1 firewall: Restart user's custom iptables rules&lt;br /&gt;Aug 19 11:27:37 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:27:37 192.168.1.1 pppd[27286]: Exit.&lt;br /&gt;Aug 19 11:27:37 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:27:40 192.168.1.1 kernel: gvid = 2 0x1 gvid 16= 40000&lt;br /&gt;Aug 19 11:27:40 192.168.1.1 kernel: gvid = 2 (gvid&amp;0xFF)  16= 20000&lt;br /&gt;Aug 19 11:27:42 192.168.1.1 syslog: Required parameters missing, make sure that username and password are given&lt;br /&gt;Aug 19 11:27:45 192.168.1.1 miniupnpd: removing firewall rules for ppp0 from zone wan&lt;br /&gt;Aug 19 11:27:46 192.168.1.1 miniupnpd: adding firewall rules for ppp0 to zone wan&lt;br /&gt;Aug 19 11:28:27 192.168.1.1 pppd[30223]: No response to 5 echo-requests&lt;br /&gt;Aug 19 11:28:27 192.168.1.1 pppd[30223]: Serial link appears to be disconnected.&lt;br /&gt;Aug 19 11:28:27 192.168.1.1 pppd[30223]: Connect time 1.0 minutes.&lt;br /&gt;Aug 19 11:28:27 192.168.1.1 pppd[30223]: Sent 716 bytes, received 7857 bytes.&lt;br /&gt;Aug 19 11:28:33 192.168.1.1 pppd[30223]: Connection terminated.&lt;br /&gt;Aug 19 11:28:33 192.168.1.1 pppd[30223]: Modem hangup&lt;br /&gt;Aug 19 11:28:53 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:28:55 192.168.1.1 : 30223 root      1308 S    /usr/sbin/pppd plugin rp-pppoe.so mtu 1442 mru 1442 n&lt;br /&gt;Aug 19 11:28:55 192.168.1.1 pppd[30223]: Terminating on signal 15&lt;br /&gt;Aug 19 11:28:55 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:28:56 192.168.1.1 pppd[32274]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:28:56 192.168.1.1 pppd[32275]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:28:56 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:28:57 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:28:57 192.168.1.1 dnsmasq[2044]: using nameserver 168.95.1.1#53&lt;br /&gt;Aug 19 11:28:57 192.168.1.1 dnsmasq[2044]: using nameserver 4.2.2.1#53&lt;br /&gt;Aug 19 11:28:57 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:29:00 192.168.1.1 pppd[30223]: Exit.&lt;br /&gt;Aug 19 11:29:08 192.168.1.1 syslog: [WAN] WAN detection success...ifup wan&lt;br /&gt;Aug 19 11:29:08 192.168.1.1 root: ifup is running.......skip ifup wan&lt;br /&gt;Aug 19 11:29:11 192.168.1.1 pppd[32275]: Timeout waiting for PADO packets&lt;br /&gt;Aug 19 11:29:11 192.168.1.1 pppd[32275]: Unable to complete PPPoE Discovery&lt;br /&gt;Aug 19 11:29:40 192.168.1.1 root: [WAN] check default route failed:(0), revert WAN state and ifup wan...&lt;br /&gt;Aug 19 11:29:43 192.168.1.1 : 32275 root         0 Z    [pppd]&lt;br /&gt;Aug 19 11:29:43 192.168.1.1 ifdown: kill all pppd...&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[772]: Plugin rp-pppoe.so loaded.&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: pppd 2.4.4 started by root, uid 0&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 : IPv6 WAN up&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: PPP session is 596&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: hnat_patch_fn /tmp/pppoe.info/eth1.101&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: Using interface ppp0&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 kernel: register netdev : ppp0#015&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: Connect: ppp0 &lt;--&gt; eth1.101&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: CHAP authentication succeeded: CHAP authentication success, unit 7675&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: CHAP authentication succeeded&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: peer from calling number aa:bb:cc:dd:ee:ff:gg:hh authorized&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: local  IP address 1.2.3.4&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: remote IP address 217.32.142.3&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: primary   DNS address 194.72.9.38&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 pppd[773]: secondary DNS address 62.6.40.162&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 dnsmasq[2044]: reading /tmp/resolv.conf.auto&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 dnsmasq[2044]: using nameserver 62.6.40.162#53&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 dnsmasq[2044]: using nameserver 194.72.9.38#53&lt;br /&gt;Aug 19 11:29:44 192.168.1.1 dnsmasq[2044]: using local addresses only for domain lan&lt;br /&gt;Aug 19 11:29:46 192.168.1.1 firewall: Restart user's custom iptables rules&lt;br /&gt;Aug 19 11:29:50 192.168.1.1 root: udp-broadcast-relay not start: can't find interface ...&lt;br /&gt;Aug 19 11:29:53 192.168.1.1 kernel: gvid = 2 0x1 gvid 16= 40000&lt;br /&gt;Aug 19 11:29:53 192.168.1.1 kernel: gvid = 2 (gvid&amp;0xFF)  16= 20000&lt;br /&gt;Aug 19 11:29:54 192.168.1.1 syslog: Required parameters missing, make sure that username and password are given&lt;br /&gt;Aug 19 11:29:58 192.168.1.1 miniupnpd: removing firewall rules for ppp0 from zone wan&lt;br /&gt;Aug 19 11:29:59 192.168.1.1 miniupnpd: adding firewall rules for ppp0 to zone wan&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I knew from my rudimentary understanding of ADSL profiling, that if I left the connection 24h/10d, then my profile should improve.&amp;nbsp; Sure enough after 7 days, there was one final disconnection and I was re-profiled back to 37.5Mb. From the Stats chart below, it is clear there were 10M of FEC errors (Thanks Father Hackett) - I saw these coming in quickly during the period of instability, but they are in the past. My prime suspects for the instability:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; WAN connection detection (see below).&lt;/li&gt;&lt;li&gt;Engineering work at the cabinet or on the copper.&lt;/li&gt;&lt;li&gt;Router firmware is iffy (it was only released on 8-Aug-2011).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;System Uptime: &lt;span id="sys_uptime"&gt;9d 04:38:12&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Up time: 1d 08:18:00&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 700px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="title"&gt;VDSL Status&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;hr size="1" /&gt;&lt;div class="refreshbar"&gt;&lt;label for="autorefresh"&gt;Auto-refresh&lt;/label&gt;    &lt;input checked="checked" id="autorefresh" name="autorefresh" type="checkbox" /&gt;        &lt;img alt="" id="update" src="http://192.168.1.1/images/updating.gif" style="visibility: hidden;" /&gt; &lt;/div&gt;&lt;table border="1" cellpadding="2" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td class="title" colspan="4" id="VDSL"&gt;VDSL&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head" id="ConnectStatus"&gt;Link Status &lt;/td&gt;   &lt;td id="link"&gt;Showtime&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head" id="Firmware"&gt;Firmware Version&lt;/td&gt;   &lt;td id="fw_ver"&gt;1411f0&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head" id="Profile"&gt;VDSL2 Profile&lt;/td&gt;   &lt;td id="vdsl_pro"&gt;8c&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="title"&gt;Basic Status&lt;/td&gt;&lt;td class="title"&gt;Upstream&lt;/td&gt;&lt;td class="title"&gt;Downstream&lt;/td&gt;&lt;td class="title"&gt;Unit&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Actual Data Rate&lt;/td&gt;   &lt;td id="up_data_rate"&gt;9998&lt;/td&gt; &lt;td id="down_data_rate"&gt;34987&lt;/td&gt; &lt;td&gt;Kb/s&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR&lt;/td&gt;   &lt;td id="up_snr"&gt;137&lt;/td&gt; &lt;td id="down_snr"&gt;79&lt;/td&gt; &lt;td&gt;0.1dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="title" id="VDSL_ADVANCE"&gt;Advance Status  &lt;/td&gt;&lt;td class="title"&gt;Upstream&lt;/td&gt;&lt;td class="title"&gt;Downstream&lt;/td&gt;&lt;td class="title"&gt;Unit&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Actual delay&lt;/td&gt;   &lt;td id="up_delay"&gt;0&lt;/td&gt; &lt;td id="down_delay"&gt;0&lt;/td&gt; &lt;td&gt;ms&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Actual INP&lt;/td&gt;   &lt;td id="up_inp"&gt;0&lt;/td&gt; &lt;td id="down_inp"&gt;0&lt;/td&gt; &lt;td&gt;0.1 symbols&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M CV&lt;/td&gt;   &lt;td id="up_mcv"&gt;0&lt;/td&gt; &lt;td id="down_mcv"&gt;1&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day CV&lt;/td&gt;   &lt;td id="up_dcv"&gt;21&lt;/td&gt; &lt;td id="down_dcv"&gt;278&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M FEC&lt;/td&gt;   &lt;td id="up_mfec"&gt;0&lt;/td&gt;&lt;td id="down_mfec"&gt;16&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day FEC&lt;/td&gt;   &lt;td id="up_dfec"&gt;0&lt;/td&gt; &lt;td id="down_dfec"&gt;2708&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total FEC&lt;/td&gt;   &lt;td id="up_tfec"&gt;0&lt;/td&gt; &lt;td id="down_tfec"&gt;10020411&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Previous Data Rate&lt;/td&gt;   &lt;td id="up_prate"&gt;9998&lt;/td&gt; &lt;td id="down_prate"&gt;31823&lt;/td&gt; &lt;td&gt;Kbps&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Attainable Rate&lt;/td&gt;   &lt;td id="up_arate"&gt;14650&lt;/td&gt; &lt;td id="down_arate"&gt;37510&lt;/td&gt; &lt;td&gt;Kbps&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Electrical Length&lt;/td&gt;   &lt;td id="up_elen"&gt;40&lt;/td&gt; &lt;td id="down_elen"&gt;40&lt;/td&gt; &lt;td&gt;0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrm"&gt;136&lt;/td&gt; &lt;td id="down_snrm"&gt;N/A  &lt;/td&gt; &lt;td&gt;(US0,--) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrma"&gt;137&lt;/td&gt; &lt;td id="down_snrma"&gt;79&lt;/td&gt; &lt;td&gt;(US1,DS1) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrb"&gt;N/A&lt;/td&gt; &lt;td id="down_snrb"&gt;78&lt;/td&gt; &lt;td&gt;(US2,DS2) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrc"&gt;N/A&lt;/td&gt; &lt;td id="down_snrc"&gt;N/A&lt;/td&gt; &lt;td&gt;(US3,DS3) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrd"&gt;N/A&lt;/td&gt; &lt;td id="down_snrd"&gt;N/A&lt;/td&gt; &lt;td&gt;(US4,DS4) 0.1 dB&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M Elapsed time&lt;/td&gt;   &lt;td id="up_etime"&gt;247&lt;/td&gt; &lt;td id="down_etime"&gt;247&lt;/td&gt; &lt;td&gt;secs&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M FECS&lt;/td&gt;   &lt;td id="up_fecs"&gt;0&lt;/td&gt; &lt;td id="down_fecs"&gt;4&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M ES&lt;/td&gt;   &lt;td id="up_mes"&gt;0&lt;/td&gt; &lt;td id="down_mes"&gt;1&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M SES&lt;/td&gt;   &lt;td id="up_mses"&gt;0&lt;/td&gt; &lt;td id="down_mses"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M LOSS&lt;/td&gt;   &lt;td id="up_mloss"&gt;0&lt;/td&gt; &lt;td id="down_mloss"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;15M UAS&lt;/td&gt;   &lt;td id="up_muas"&gt;0&lt;/td&gt; &lt;td id="down_muas"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day Elapsed time&lt;/td&gt;   &lt;td id="up_detime"&gt;29947&lt;/td&gt; &lt;td id="down_detime"&gt;29947&lt;/td&gt; &lt;td&gt;secs&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day FECS&lt;/td&gt;   &lt;td id="up_dfecs"&gt;0&lt;/td&gt; &lt;td id="down_dfecs"&gt;317&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day ES&lt;/td&gt;   &lt;td id="up_des"&gt;18&lt;/td&gt; &lt;td id="down_des"&gt;245&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day SES&lt;/td&gt;   &lt;td id="up_dses"&gt;0&lt;/td&gt; &lt;td id="down_dses"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day LOSS&lt;/td&gt;   &lt;td id="up_dloss"&gt;0&lt;/td&gt; &lt;td id="down_dloss"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;1Day UAS&lt;/td&gt;   &lt;td id="up_duas"&gt;0&lt;/td&gt; &lt;td id="down_duas"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total FECS&lt;/td&gt;   &lt;td id="up_tfecs"&gt;0&lt;/td&gt; &lt;td id="down_tfecs"&gt;38261&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total ES&lt;/td&gt;   &lt;td id="up_tes"&gt;31696&lt;/td&gt; &lt;td id="down_tes"&gt;833&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total SES&lt;/td&gt;   &lt;td id="up_tses"&gt;968&lt;/td&gt; &lt;td id="down_tses"&gt;18&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total LOSS&lt;/td&gt;   &lt;td id="up_tloss"&gt;0&lt;/td&gt; &lt;td id="down_tloss"&gt;20&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Total UAS&lt;/td&gt;   &lt;td id="up_tuas"&gt;79750&lt;/td&gt; &lt;td id="down_tuas"&gt;84&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Where local IP address has been changed to 1.2.3.4 and Calling number modified to aa:bb:cc:dd:ee:ff:gg:hh&lt;br /&gt;&lt;br /&gt;I disabled temporarily(or maybe not?) the WAN-&amp;gt;Internet Access-&amp;gt;WAN Connection Detection-&amp;gt;Disabled.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8237050014312360898?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8237050014312360898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8237050014312360898' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8237050014312360898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8237050014312360898'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/09/draytek-2750n-and-profile-drop.html' title='Draytek 2750n and profile drop'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6795289542583216430</id><published>2011-08-09T03:18:00.000-07:00</published><updated>2011-08-09T04:02:24.283-07:00</updated><title type='text'>Draytek 2750n and BT Infinity</title><content type='html'>We've been worrying about the Huawei Openreach Infinity modems because of the tales of woe in the &lt;a href="http://community.bt.com/t5/BT-Infinity/bd-p/BTInfinity"&gt;BT Community forums&lt;/a&gt;. They overheat and can only be replaced by BT Openreach Engineers. This means you have to wait for an Engineer to turn up to replace the modem. A 2 minute job. As an insurance policy, we decided to get a &lt;a href="http://www.draytek.com/user/PdListbyNewCategory.php?action=LoadData&amp;amp;Typeid=317"&gt;Draytek Vigor 2750n&lt;/a&gt;. I cannot fault it. There are excellent setup instructions here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.draytek.co.uk/support/kb/kb_vigor_v2750_setup.html"&gt;http://www.draytek.co.uk/support/kb/kb_vigor_v2750_setup.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;WAN-&amp;gt;Multi-VLAN-&amp;gt;WLAN VLAN ID = 101&lt;br /&gt;&lt;br /&gt;All you need to know on top of this is that the BT Infinity Username password combination is:&lt;br /&gt;&lt;br /&gt;PPPoE&lt;br /&gt;Username: bthomehub@btinternet.com&lt;br /&gt;Password: &lt;span style="font-style:italic;"&gt;One blank space&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It doesn't work with nothing there and it didn't work with BT. I had to use one blank space. It then connected first time.&lt;br /&gt;&lt;br /&gt;Gallery of the install photos found below. The Openreach modem has been left on the wall for failover purposes. It is not powered up.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-NVPSSM0LEwI/TkEQRzQQtsI/AAAAAAAAB6k/PBQ7JqAhWDI/s1600/IMG_20110809_104537_med.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/-NVPSSM0LEwI/TkEQRzQQtsI/AAAAAAAAB6k/PBQ7JqAhWDI/s200/IMG_20110809_104537_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5638806106446804674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-sr5vCHxVsY8/TkEQSLqkJ-I/AAAAAAAAB6s/2PG49TTN0TM/s1600/IMG_20110809_111041_med.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/-sr5vCHxVsY8/TkEQSLqkJ-I/AAAAAAAAB6s/2PG49TTN0TM/s200/IMG_20110809_111041_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5638806112999581666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;More photos &lt;a href="https://picasaweb.google.com/117903659405547038190/Draytek_Install#"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;VDSL Stats&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="1" width="95%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="title" colspan="4" id="VDSL"&gt;VDSL&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head" id="ConnectStatus"&gt;Link Status &lt;/td&gt;   &lt;td id="link"&gt;Showtime&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head" id="Firmware"&gt;Firmware Version&lt;/td&gt;   &lt;td id="fw_ver"&gt;131000&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head" id="Profile"&gt; VDSL2 Profile&lt;/td&gt;   &lt;td id="vdsl_pro"&gt;8c&lt;/td&gt; &lt;/tr&gt;   &lt;tr&gt;   &lt;td class="title"&gt;Basic Status&lt;/td&gt;&lt;td class="title"&gt;Upstream&lt;/td&gt;&lt;td class="title"&gt;Downstream&lt;/td&gt;&lt;td class="title"&gt;Unit&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td class="head"&gt;Actual Data Rate&lt;/td&gt;   &lt;td id="up_data_rate"&gt;9998&lt;/td&gt; &lt;td id="down_data_rate"&gt;36813&lt;/td&gt; &lt;td&gt;Kb/s&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;SNR&lt;/td&gt;   &lt;td id="up_snr"&gt;99&lt;/td&gt; &lt;td id="down_snr"&gt;62&lt;/td&gt; &lt;td&gt;0.1dB&lt;/td&gt; &lt;/tr&gt;   &lt;tr&gt;   &lt;td class="title" id="VDSL_ADVANCE"&gt;Advance Status  &lt;/td&gt;&lt;td class="title"&gt;Upstream&lt;/td&gt;&lt;td class="title"&gt;Downstream&lt;/td&gt;&lt;td class="title"&gt;Unit&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Actual delay&lt;/td&gt;   &lt;td id="up_delay"&gt;0&lt;/td&gt; &lt;td id="down_delay"&gt;0&lt;/td&gt; &lt;td&gt;ms&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Actual INP&lt;/td&gt;   &lt;td id="up_inp"&gt;0&lt;/td&gt; &lt;td id="down_inp"&gt;0&lt;/td&gt; &lt;td&gt;0.1 symbols&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;15M CV&lt;/td&gt;   &lt;td id="up_mcv"&gt;0&lt;/td&gt; &lt;td id="down_mcv"&gt;2&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;1Day CV&lt;/td&gt;   &lt;td id="up_dcv"&gt;12621&lt;/td&gt; &lt;td id="down_dcv"&gt;19&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;15M FEC&lt;/td&gt;   &lt;td id="up_mfec"&gt;&amp;lt;="" td=""&amp;gt;0&lt;/td&gt;&lt;td id="down_mfec"&gt;5&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;1Day FEC&lt;/td&gt;   &lt;td id="up_dfec"&gt;0&lt;/td&gt; &lt;td id="down_dfec"&gt;46&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Total FEC&lt;/td&gt;   &lt;td id="up_tfec"&gt;0&lt;/td&gt; &lt;td id="down_tfec"&gt;46&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Previous Data Rate&lt;/td&gt;   &lt;td id="up_prate"&gt;0&lt;/td&gt; &lt;td id="down_prate"&gt;0&lt;/td&gt; &lt;td&gt;Kbps&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Attainable Rate&lt;/td&gt;   &lt;td id="up_arate"&gt;12677&lt;/td&gt; &lt;td id="down_arate"&gt;36813&lt;/td&gt; &lt;td&gt;Kbps&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Electrical Length&lt;/td&gt;   &lt;td id="up_elen"&gt;49&lt;/td&gt; &lt;td id="down_elen"&gt;49&lt;/td&gt; &lt;td&gt;0.1 dB&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrm"&gt;99&lt;/td&gt; &lt;td id="down_snrm"&gt;  N/A  &lt;/td&gt; &lt;td&gt;(US0,--) 0.1 dB&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrma"&gt;99&lt;/td&gt; &lt;td id="down_snrma"&gt;62&lt;/td&gt; &lt;td&gt;(US1,DS1) 0.1 dB&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrb"&gt;N/A&lt;/td&gt; &lt;td id="down_snrb"&gt;62&lt;/td&gt; &lt;td&gt;(US2,DS2) 0.1 dB&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrc"&gt;N/A&lt;/td&gt; &lt;td id="down_snrc"&gt;N/A&lt;/td&gt; &lt;td&gt;(US3,DS3) 0.1 dB&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;SNR Margin&lt;/td&gt;   &lt;td id="up_snrd"&gt;N/A&lt;/td&gt; &lt;td id="down_snrd"&gt;N/A&lt;/td&gt; &lt;td&gt;(US4,DS4) 0.1 dB&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;15M Elapsed time&lt;/td&gt;   &lt;td id="up_etime"&gt;219&lt;/td&gt; &lt;td id="down_etime"&gt;219&lt;/td&gt; &lt;td&gt;secs&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;15M FECS&lt;/td&gt;   &lt;td id="up_fecs"&gt;0&lt;/td&gt; &lt;td id="down_fecs"&gt;1&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;15M ES&lt;/td&gt;   &lt;td id="up_mes"&gt;0&lt;/td&gt; &lt;td id="down_mes"&gt;1&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;15M SES&lt;/td&gt;   &lt;td id="up_mses"&gt;0&lt;/td&gt; &lt;td id="down_mses"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;15M LOSS&lt;/td&gt;   &lt;td id="up_mloss"&gt;0&lt;/td&gt; &lt;td id="down_mloss"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;15M UAS&lt;/td&gt;   &lt;td id="up_muas"&gt;0&lt;/td&gt; &lt;td id="down_muas"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;1Day Elapsed time&lt;/td&gt;   &lt;td id="up_detime"&gt;3819&lt;/td&gt; &lt;td id="down_detime"&gt;3819&lt;/td&gt; &lt;td&gt;secs&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;1Day FECS&lt;/td&gt;   &lt;td id="up_dfecs"&gt;0&lt;/td&gt; &lt;td id="down_dfecs"&gt;12&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;1Day ES&lt;/td&gt;   &lt;td id="up_des"&gt;10601&lt;/td&gt; &lt;td id="down_des"&gt;16&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;1Day SES&lt;/td&gt;   &lt;td id="up_dses"&gt;52&lt;/td&gt; &lt;td id="down_dses"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;1Day LOSS&lt;/td&gt;   &lt;td id="up_dloss"&gt;0&lt;/td&gt; &lt;td id="down_dloss"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;1Day UAS&lt;/td&gt;   &lt;td id="up_duas"&gt;78029&lt;/td&gt; &lt;td id="down_duas"&gt;30&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Total FECS&lt;/td&gt;   &lt;td id="up_tfecs"&gt;0&lt;/td&gt; &lt;td id="down_tfecs"&gt;12&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Total ES&lt;/td&gt;   &lt;td id="up_tes"&gt;10601&lt;/td&gt; &lt;td id="down_tes"&gt;16&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Total SES&lt;/td&gt;   &lt;td id="up_tses"&gt;52&lt;/td&gt; &lt;td id="down_tses"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Total LOSS&lt;/td&gt;   &lt;td id="up_tloss"&gt;0&lt;/td&gt; &lt;td id="down_tloss"&gt;0&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td class="head"&gt;Total UAS&lt;/td&gt;   &lt;td id="up_tuas"&gt;78029&lt;/td&gt; &lt;td id="down_tuas"&gt;30&lt;/td&gt; &lt;td&gt;counter&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6795289542583216430?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6795289542583216430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6795289542583216430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6795289542583216430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6795289542583216430'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/08/draytek-2750n-and-bt-infinity.html' title='Draytek 2750n and BT Infinity'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-NVPSSM0LEwI/TkEQRzQQtsI/AAAAAAAAB6k/PBQ7JqAhWDI/s72-c/IMG_20110809_104537_med.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-1862493791064352709</id><published>2011-06-05T11:00:00.000-07:00</published><updated>2011-07-21T04:06:26.634-07:00</updated><title type='text'></title><content type='html'>&lt;h1&gt;Printing out HTML/CSS Colours&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I was trawling around websites trying to get an idea for colour schemes. They all appear to be infested with banner ads and anti-virus peddlers.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For people who like to roll their own, here is a Python script to dump out the hex codes for the first 16**3 colours:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#!/usr/bin/python&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#Script to dump out all basic web colours in a table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;hex_colours=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;counter=1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print """ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;table&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;"""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print '&amp;lt;tr&amp;gt;'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;for alpha1 in hex_colours:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; for alpha2 in hex_colours:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  alpha12=alpha1+alpha2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  for alpha3 in hex_colours:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   alpha123=alpha12+alpha3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   print '&amp;lt;td style=\"background-color:#%s ;\"&amp;gt;%s&amp;lt;/td&amp;gt;' % (alpha123,alpha123)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#Every 20 cells, we want to change row&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   if counter%20==0  :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     print '&amp;lt;/tr&amp;gt;\n&amp;lt;tr&amp;gt;'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   counter += 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print '&amp;lt;/tr&amp;gt;'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print """&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;"""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;And here is the output file: &lt;a href="http://www.lunarlite.co.uk/code/web_colours.html"&gt;Web colours&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.lunarlite.co.uk/code/colour_chart.txt"&gt;Original Python script&lt;/a&gt; - Blogger mangled mine&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-1862493791064352709?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/1862493791064352709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=1862493791064352709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1862493791064352709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1862493791064352709'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/06/printing-out-htmlcss-colours-i-was.html' title=''/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-7322987423767051316</id><published>2011-02-13T03:26:00.000-08:00</published><updated>2011-02-13T03:48:52.299-08:00</updated><title type='text'>Colour Postscript printing OS X 10.6 Snow Leopard</title><content type='html'>The default setting for Generic Postscript printing under Snow Leopard is black and white only. We use a Dell Color Laser 3110cn [sic], so it should be possible for a Mac to print under colour.&lt;br /&gt;&lt;br /&gt;There are no settings in the Cups configuration (http://localhost:631) to switch on colour printing. PCL 5/6 supports colour printing and is supported on this model, but it is wading through treacle slow. Fine if you want your CUPS jobs to take 10 minutes to print, otherwise avoid.&lt;br /&gt;&lt;br /&gt;To get Colour postscript printing to play nicely, setup the printer as normal using either http://localhost:631 or System Settings-&gt;Printers-&gt;Add new printer.&lt;br /&gt;&lt;br /&gt;Select Generic Postscript Printer.&lt;br /&gt;&lt;br /&gt;Open a Terminal using Applications-&gt;Utilities-&gt;Terminal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ cd /etc/cups/ppd&lt;br /&gt;$ sudo vi *.ppd&lt;br /&gt;Dell Color Laser 3110cn&lt;br /&gt;&lt;br /&gt;Remove the following two lines:&lt;br /&gt;*ColorDevice: False&lt;br /&gt;*DefaultColorSpace: Gray&lt;br /&gt;&lt;br /&gt;Restart CUPS (or restart your Mac if you fear the command line):&lt;br /&gt;ps -ef | grep cups[d]&lt;br /&gt;&lt;br /&gt;Identify the cupsd process and the PID - in my case this is 491&lt;br /&gt;kill -HUP 491&lt;br /&gt;&lt;br /&gt;Try printing a colour page. It should process quickly and be in colour.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-7322987423767051316?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/7322987423767051316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=7322987423767051316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/7322987423767051316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/7322987423767051316'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/02/colour-postscript-printing-os-x-106.html' title='Colour Postscript printing OS X 10.6 Snow Leopard'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-2417167808708779514</id><published>2011-01-07T12:37:00.000-08:00</published><updated>2011-01-07T13:02:03.519-08:00</updated><title type='text'>When Lacie Hard drive Caddies go bad</title><content type='html'>We purchased 3 of these USB Lacie Hard drives on  for a customer who needed a NAS:&lt;br /&gt;&lt;br /&gt;LaCie 500GB USB2 7200rpm 8MB, Designed by F.A Porsche  -  LaCie has teamed up with the renowned design agency Porsche Design to create this family of hard drives. With these drives...&lt;br /&gt;&lt;br /&gt;After problems with the NSLU2 and these drives, I eventually gave up and &lt;a href="http://reversemidastouch.blogspot.com/2009/10/building-customised-quiet-nas-using.html"&gt;rebuilt a NAS based on an Atom processor and Ubuntu server edition&lt;/a&gt;. I then re-used the drives as an off-site backup for the NAS and an extra copy of the data &lt;span style="font-style: italic;"&gt;just in case.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All worked fine, the drives were formatted HFS+ which allowed the Mac clients to read them in the event of NAS failure. Until day 310 of 2010 of the calendar arrived (I can tell this from the backup logs).  6-November-2010.&lt;br /&gt;&lt;br /&gt;I turned up on 6-Jan-2011 and found this in the logs when I tried to connect &lt;span style="font-style: italic;"&gt;any&lt;/span&gt; of the drives. /var/log/syslog from Ubuntu 9.04 server.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Jan  6 09:39:19 datastore kernel: [3106011.151456] ehci_hcd 0000:00:1d.7: port 2 reset error -110&lt;br /&gt;Jan  6 09:39:19 datastore kernel: [3106011.400029] usb 1-2: new high speed USB device using ehci_hcd and address 16&lt;br /&gt;Jan  6 09:39:19 datastore kernel: [3106011.551063] usb 1-2: configuration #1 chosen from 1 choice&lt;br /&gt;Jan  6 09:39:19 datastore kernel: [3106011.551524] scsi6 : SCSI emulation for USB Mass Storage devices&lt;br /&gt;Jan  6 09:39:19 datastore kernel: [3106011.551689] usb-storage: device found at 16&lt;br /&gt;Jan  6 09:39:19 datastore kernel: [3106011.551696] usb-storage: waiting for device to settle before scanning&lt;br /&gt;Jan  6 09:39:24 datastore kernel: [3106016.550309] usb-storage: device scan complete&lt;br /&gt;Jan  6 09:39:30 datastore kernel: [3106023.030036] usb 1-2: reset high speed USB device using ehci_hcd and address 16&lt;br /&gt;Jan  6 09:39:41 datastore kernel: [3106033.300036] usb 1-2: reset high speed USB device using ehci_hcd and address 16&lt;br /&gt;Jan  6 09:39:46 datastore kernel: [3106038.570034] usb 1-2: reset high speed USB device using ehci_hcd and address 16&lt;br /&gt;Jan  6 09:39:46 datastore kernel: [3106038.710056] usb 1-2: device descriptor read/64, error -71&lt;br /&gt;Jan  6 09:39:46 datastore kernel: [3106038.940031] usb 1-2: device descriptor read/64, error -71&lt;br /&gt;Jan  6 09:39:47 datastore kernel: [3106039.170030] usb 1-2: reset high speed USB device using ehci_hcd and address 16&lt;br /&gt;Jan  6 09:39:47 datastore kernel: [3106039.300030] usb 1-2: device descriptor read/64, error -71&lt;br /&gt;Jan  6 09:39:47 datastore kernel: [3106039.540031] usb 1-2: device descriptor read/64, error -71&lt;br /&gt;Jan  6 09:39:47 datastore kernel: [3106039.770041] usb 1-2: reset high speed USB device using ehci_hcd and address 16&lt;br /&gt;Jan  6 09:39:48 datastore kernel: [3106040.190025] usb 1-2: device not accepting address 16, error -71&lt;br /&gt;Jan  6 09:39:48 datastore kernel: [3106040.310029] usb 1-2: reset high speed USB device using ehci_hcd and address 16&lt;br /&gt;Jan  6 09:39:48 datastore kernel: [3106040.730028] usb 1-2: device not accepting address 16, error -71&lt;br /&gt;Jan  6 09:39:48 datastore kernel: [3106040.730086] scsi 6:0:0:0: Device offlined - not ready after error recovery&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I got this for all 3 drives. One drive had been in storage for 15 months and not been anywhere near a computer of any description. I tried it under Ubuntu 9.04 server, 9.10 desktop and it was not showing up at all in Disk Utility on two Mac OS X clients. Sigh. The Lacie disks were for all intents and purposes beggered. I read on the forums that it could be a cable problem. No. I read on the forums it could be a power supply problem. No. I read on the forums it could be a caddy problem.&lt;br /&gt;&lt;br /&gt;I opened one up to see if any data could be recovered. The disks inside the Lacie enclosures are Seagate Barracudas. I placed it into a caddy and it was AOK. Disk 2 also AOK. Disk 3 AOK. All 3 caddies had failed, but the disks were all fine. 3 failed caddies within 2 months. There must be something wrong with the Controllers inside Lacie drive caddies which causes this problem.  The caddies are now landfill fodder and the disks are happily being used in an pluggable caddy. I will never again buy a Lacie drive.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EjK7a75bRts/TSd95uI-uYI/AAAAAAAABaw/6DH-P9sHcDg/s1600/caddy_fa.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_EjK7a75bRts/TSd95uI-uYI/AAAAAAAABaw/6DH-P9sHcDg/s200/caddy_fa.jpg" alt="" id="BLOGGER_PHOTO_ID_5559550695603878274" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-2417167808708779514?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/2417167808708779514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=2417167808708779514' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2417167808708779514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2417167808708779514'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2011/01/when-lacie-hard-drive-caddies-go-bad.html' title='When Lacie Hard drive Caddies go bad'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EjK7a75bRts/TSd95uI-uYI/AAAAAAAABaw/6DH-P9sHcDg/s72-c/caddy_fa.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6325737886713615318</id><published>2010-09-21T23:28:00.001-07:00</published><updated>2010-09-21T23:55:43.416-07:00</updated><title type='text'>Opting out of BT and Barefruit and BT Web Address Help</title><content type='html'>So, BT are using Barefruit to return DNS queries again. It even has a name: BT Web Address Help.&lt;br /&gt;&lt;br /&gt;Very cosy name. They are helping out us poor misguided users and definitely not trying to make a quick buck on sponsored links @ google.cmo or bbc.couk or anything. Thanks BT.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can test it by creating a shell script bt_dns.sh&lt;br /&gt;&lt;br /&gt;tng@danny:~$ cat bt_dns.sh &lt;br /&gt;#!/bin/bash&lt;br /&gt;for DNS_SERVER in  `cat all_bt.txt`&lt;br /&gt;do&lt;br /&gt;dig sausages.ora @${DNS_SERVER}&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;Then we need a configuration file all_bt.txt containing the following:&lt;br /&gt;&lt;br /&gt;tng@danny:~$ cat all_bt.txt &lt;br /&gt;194.72.9.38&lt;br /&gt;194.74.65.69&lt;br /&gt;194.72.9.34&lt;br /&gt;194.72.9.38&lt;br /&gt;194.74.65.68&lt;br /&gt;194.74.65.69&lt;br /&gt;194.72.0.98&lt;br /&gt;194.72.0.114&lt;br /&gt;62.6.40.162&lt;br /&gt;62.6.40.178&lt;br /&gt;8.8.8.8&lt;br /&gt;&lt;br /&gt;tng@danny:~$ chmod a+x bt_dns.sh&lt;br /&gt;&lt;br /&gt;The last server 8.8.8.8 belongs to google and is our control.&lt;br /&gt;&lt;br /&gt;Which results in the incorrect DNS with NOERROR s instead of NXDOMAINs.&lt;br /&gt;&lt;br /&gt;tng@danny:~$ ./bt_dns.sh | egrep "NOERROR|NXDOMAIN"&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 37643&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 26799&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 21054&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 37604&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 50429&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 10757&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 52823&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 40204&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 17590&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 43674&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 39713&lt;br /&gt;&lt;br /&gt;BT offer an opting out web page:&lt;br /&gt;&lt;a href="http://preferences.webaddresshelp.bt.com/selfcare/preferences.cgi"&gt;http://preferences.webaddresshelp.bt.com/selfcare/preferences.cgi&lt;/a&gt;. It would have been polite if they had offered an "Opting In" button instead, but it is BT and we can't expect them not to try and make a quick buck.&lt;br /&gt;&lt;br /&gt;Does it work?&lt;br /&gt;[EDIT]Yes - see below[/EDIT]. BT explain why they are doing it (Browser NXDOMAINs are just so unhelpful).&lt;br /&gt;&lt;a href="http://bt.custhelp.com/app/answers/detail/a_id/14244/c/346,402,405"&gt;http://bt.custhelp.com/app/answers/detail/a_id/14244/c/346,402,405&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;tng@danny:~$ ./bt_dns.sh | egrep "NOERROR|NXDOMAIN"&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 24075&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 18186&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 61799&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 20473&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 942&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 6652&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 42690&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 27564&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 54089&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 3370&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 24662&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6325737886713615318?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6325737886713615318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6325737886713615318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6325737886713615318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6325737886713615318'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/09/opting-out-of-bt-and-barefruit.html' title='Opting out of BT and Barefruit and BT Web Address Help'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8243544221288168662</id><published>2010-09-08T05:37:00.001-07:00</published><updated>2010-09-08T05:43:12.136-07:00</updated><title type='text'>BT Broadband trialling Barefruit - the plot thins</title><content type='html'>So BT have switched off the Barefruit-&gt;NXDOMAIN trial as of 8-Sep-2010. &lt;a href="http://www.badphorm.co.uk/page.php?2"&gt;Another user trial&lt;/a&gt; without permission.&lt;br /&gt;&lt;br /&gt;My current DNS servers are:&lt;br /&gt;&lt;br /&gt;Primary DNS 194.74.65.68&lt;br /&gt;Secondary DNS 217.32.171.21&lt;br /&gt;&lt;br /&gt;Both of which return NXDOMAIN for sausages.ora&lt;br /&gt;&lt;br /&gt;My previous DNS server is now giving NXDOMAINS and the other server is down:&lt;br /&gt;&lt;br /&gt;tng@danny:~$ dig sausages.ora @62.6.40.178&lt;br /&gt;&lt;br /&gt;; &lt;&lt;&gt;&gt; DiG 9.6.1-P2 &lt;&lt;&gt;&gt; sausages.ora @62.6.40.178&lt;br /&gt;;; global options: +cmd&lt;br /&gt;;; Got answer:&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 56970&lt;br /&gt;;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0&lt;br /&gt;&lt;br /&gt;;; QUESTION SECTION:&lt;br /&gt;;sausages.ora.   IN A&lt;br /&gt;&lt;br /&gt;;; AUTHORITY SECTION:&lt;br /&gt;.   10246 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010090800 1800 900 604800 86400&lt;br /&gt;&lt;br /&gt;;; Query time: 37 msec&lt;br /&gt;;; SERVER: 62.6.40.178#53(62.6.40.178)&lt;br /&gt;;; WHEN: Wed Sep  8 13:25:06 2010&lt;br /&gt;;; MSG SIZE  rcvd: 105&lt;br /&gt;&lt;br /&gt;tng@danny:~$ dig sausages.ora @194.72.65.69&lt;br /&gt;&lt;br /&gt;; &lt;&lt;&gt;&gt; DiG 9.6.1-P2 &lt;&lt;&gt;&gt; sausages.ora @194.72.65.69&lt;br /&gt;;; global options: +cmd&lt;br /&gt;;; connection timed out; no servers could be reached&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Could it be that they are hacking/unhacking BIND source code on 194.72.65.69 ?&lt;br /&gt;&lt;br /&gt;Still no response from Customer Services as to why this happened.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8243544221288168662?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8243544221288168662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8243544221288168662' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8243544221288168662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8243544221288168662'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/09/bt-broadband-trialling-barefruit-plot.html' title='BT Broadband trialling Barefruit - the plot thins'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6310749225427101382</id><published>2010-09-06T12:11:00.000-07:00</published><updated>2010-09-06T23:30:20.811-07:00</updated><title type='text'>Colin Drew versus Colin Drew: barefruit.co.uk web misdirection monkeys</title><content type='html'>So BT hijacked my DNS. Big deal you might say - well actually &lt;a href="http://www.icann.org/en/committees/security/sac032.pdf"&gt;it breaks *stuff* [PDF]&lt;/a&gt; all over the internet.&lt;br /&gt;&lt;br /&gt;I wondered who was the chief monkey in charge of monkeying with it as someone, somewhere must have a clue about implementing this. I did some digging.&lt;br /&gt;&lt;br /&gt;Colin Drew (of barefruit.co.uk) is their UNIX dude. He is the man responsible for selling out to the man and really should know better:&lt;br /&gt;&lt;a href=" http://barefruit.co.uk/about_us.htm"&gt;&lt;br /&gt;http://barefruit.co.uk/about_us.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wouldn't be the same Colin Drew who signed this petition would he?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.petitioncenter.com/verisign-dns/2401/"&gt;http://www.petitioncenter.com/verisign-dns/2401/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Search for Colin Drew, of Camel Networks..... and what do we get? qax.org. Registered to a Colin Drew:&lt;br /&gt;&lt;br /&gt;tng@danny:~$ whois qax.org&lt;br /&gt;NOTICE: Access to .ORG WHOIS information is provided to assist persons in &lt;br /&gt;determining the contents of a domain name registration record in the Public Interest Registry&lt;br /&gt;registry database. The data in this record is provided by Public Interest Registry&lt;br /&gt;for informational purposes only, and Public Interest Registry does not guarantee its &lt;br /&gt;accuracy.  This service is intended only for query-based access.  You agree &lt;br /&gt;that you will use this data only for lawful purposes and that, under no &lt;br /&gt;circumstances will you use this data to: (a) allow, enable, or otherwise &lt;br /&gt;support the transmission by e-mail, telephone, or facsimile of mass &lt;br /&gt;unsolicited, commercial advertising or solicitations to entities other than &lt;br /&gt;the data recipient's own existing customers; or (b) enable high volume, &lt;br /&gt;automated, electronic processes that send queries or data to the systems of &lt;br /&gt;Registry Operator or any ICANN-Accredited Registrar, except as reasonably &lt;br /&gt;necessary to register domain names or modify existing registrations.  All &lt;br /&gt;rights reserved. Public Interest Registry reserves the right to modify these terms at any &lt;br /&gt;time. By submitting this query, you agree to abide by this policy. &lt;br /&gt;&lt;br /&gt;Domain ID:D863541-LROR&lt;br /&gt;Domain Name:QAX.ORG&lt;br /&gt;Created On:22-Jan-1998 05:00:00 UTC&lt;br /&gt;Last Updated On:13-Sep-2009 10:54:20 UTC&lt;br /&gt;Expiration Date:21-Jan-2011 05:00:00 UTC&lt;br /&gt;Sponsoring Registrar:eNom, Inc. (R39-LROR)&lt;br /&gt;Status:CLIENT TRANSFER PROHIBITED&lt;br /&gt;Registrant ID:tuWTEKpgrPw78jsm&lt;br /&gt;Registrant Name:Colin Drew&lt;br /&gt;Registrant Organization:Colin Drew&lt;br /&gt;Registrant Street1:12, Settington Avenue&lt;br /&gt;Registrant Street2:&lt;br /&gt;Registrant Street3:&lt;br /&gt;Registrant City:Chatham&lt;br /&gt;Registrant State/Province:Kent&lt;br /&gt;Registrant Postal Code:ME50AH&lt;br /&gt;Registrant Country:GB&lt;br /&gt;Registrant Phone:+44.1634813890&lt;br /&gt;Registrant Phone Ext.:&lt;br /&gt;Registrant FAX:&lt;br /&gt;Registrant FAX Ext.:&lt;br /&gt;Registrant Email:domains@qax.org&lt;br /&gt;Admin ID:tueqZntOa8KhSEae&lt;br /&gt;Admin Name:Colin Drew&lt;br /&gt;Admin Organization:Colin Drew&lt;br /&gt;Admin Street1:12, Settington Avenue&lt;br /&gt;Admin Street2:&lt;br /&gt;Admin Street3:&lt;br /&gt;Admin City:Chatham&lt;br /&gt;Admin State/Province:Kent&lt;br /&gt;Admin Postal Code:ME50AH&lt;br /&gt;Admin Country:GB&lt;br /&gt;Admin Phone:+44.1634813890&lt;br /&gt;Admin Phone Ext.:&lt;br /&gt;Admin FAX:&lt;br /&gt;Admin FAX Ext.:&lt;br /&gt;Admin Email:domains@qax.org&lt;br /&gt;Tech ID:tucz02zvcxIwqM1w&lt;br /&gt;Tech Name:Colin Drew&lt;br /&gt;Tech Organization:Colin Drew&lt;br /&gt;Tech Street1:12, Settington Avenue&lt;br /&gt;Tech Street2:&lt;br /&gt;Tech Street3:&lt;br /&gt;Tech City:Chatham&lt;br /&gt;Tech State/Province:Kent&lt;br /&gt;Tech Postal Code:ME50AH&lt;br /&gt;Tech Country:GB&lt;br /&gt;Tech Phone:+44.1634813890&lt;br /&gt;Tech Phone Ext.:&lt;br /&gt;Tech FAX:&lt;br /&gt;Tech FAX Ext.:&lt;br /&gt;Tech Email:domains@qax.org&lt;br /&gt;Name Server:US01.AMERICAS.CAMELDNS.COM&lt;br /&gt;Name Server:UK01.EUROPE.CAMELDNS.COM&lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;Name Server: &lt;br /&gt;DNSSEC:Unsigned&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So now we need to tie camelnetworks.com, cameldns.com with camelbackup.com. Easy peasy:&lt;br /&gt;&lt;br /&gt;Camelnetwork.com is owned by Chris Burton of 8086.net:&lt;br /&gt;&lt;br /&gt;tng@danny:~$ whois camelnetwork.com&lt;br /&gt;&lt;br /&gt;Whois Server Version 2.0&lt;br /&gt;&lt;br /&gt;Domain names in the .com and .net domains can now be registered&lt;br /&gt;with many different competing registrars. Go to http://www.internic.net&lt;br /&gt;for detailed information.&lt;br /&gt;&lt;br /&gt;   Domain Name: CAMELNETWORK.COM&lt;br /&gt;   Registrar: ENOM, INC.&lt;br /&gt;   Whois Server: whois.enom.com&lt;br /&gt;   Referral URL: http://www.enom.com&lt;br /&gt;   Name Server: STAFF.UK00.EUROPE.CAMELDNS.COM&lt;br /&gt;   Name Server: STAFF.US00.AMERICAS.CAMELDNS.COM&lt;br /&gt;   Status: clientTransferProhibited&lt;br /&gt;   Updated Date: 02-jan-2010&lt;br /&gt;   Creation Date: 03-jan-2003&lt;br /&gt;   Expiration Date: 03-jan-2011&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; Last update of whois database: Mon, 06 Sep 2010 19:37:08 UTC &lt;&lt;&lt;&lt;br /&gt;&lt;br /&gt;NOTICE: The expiration date displayed in this record is the date the &lt;br /&gt;registrar's sponsorship of the domain name registration in the registry is &lt;br /&gt;currently set to expire. This date does not necessarily reflect the expiration &lt;br /&gt;date of the domain name registrant's agreement with the sponsoring &lt;br /&gt;registrar.  Users may consult the sponsoring registrar's Whois database to &lt;br /&gt;view the registrar's reported date of expiration for this registration.&lt;br /&gt;&lt;br /&gt;TERMS OF USE: You are not authorized to access or query our Whois &lt;br /&gt;database through the use of electronic processes that are high-volume and &lt;br /&gt;automated except as reasonably necessary to register domain names or &lt;br /&gt;modify existing registrations; the Data in VeriSign Global Registry &lt;br /&gt;Services' ("VeriSign") Whois database is provided by VeriSign for &lt;br /&gt;information purposes only, and to assist persons in obtaining information &lt;br /&gt;about or related to a domain name registration record. VeriSign does not &lt;br /&gt;guarantee its accuracy. By submitting a Whois query, you agree to abide &lt;br /&gt;by the following terms of use: You agree that you may use this Data only &lt;br /&gt;for lawful purposes and that under no circumstances will you use this Data &lt;br /&gt;to: (1) allow, enable, or otherwise support the transmission of mass &lt;br /&gt;unsolicited, commercial advertising or solicitations via e-mail, telephone, &lt;br /&gt;or facsimile; or (2) enable high volume, automated, electronic processes &lt;br /&gt;that apply to VeriSign (or its computer systems). The compilation, &lt;br /&gt;repackaging, dissemination or other use of this Data is expressly &lt;br /&gt;prohibited without the prior written consent of VeriSign. You agree not to &lt;br /&gt;use electronic processes that are automated and high-volume to access or &lt;br /&gt;query the Whois database except as reasonably necessary to register &lt;br /&gt;domain names or modify existing registrations. VeriSign reserves the right &lt;br /&gt;to restrict your access to the Whois database in its sole discretion to ensure &lt;br /&gt;operational stability.  VeriSign may restrict or terminate your access to the &lt;br /&gt;Whois database for failure to abide by these terms of use. VeriSign &lt;br /&gt;reserves the right to modify these terms at any time. &lt;br /&gt;&lt;br /&gt;The Registry database contains ONLY .COM, .NET, .EDU domains and&lt;br /&gt;Registrars.=-=-=-=&lt;br /&gt;Visit AboutUs.org for more information about camelnetwork.com&lt;br /&gt;&lt;a href="http://www.aboutus.org/camelnetwork.com"&gt;AboutUs: camelnetwork.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Registration Service Provided By: 8086 Limited&lt;br /&gt;Contact: Domains@8086.net&lt;br /&gt;Visit: http://www.8086.net/&lt;br /&gt; &lt;br /&gt;Domain name: camelnetwork.com&lt;br /&gt;&lt;br /&gt;Registrant Contact:&lt;br /&gt;   NA&lt;br /&gt;   Camel Network ()&lt;br /&gt;   &lt;br /&gt;   Fax: &lt;br /&gt;   Unit 11, St. Thomas St. Workshops&lt;br /&gt;   Newcastle upon Tyne, TYNE &amp; Wear NE1 4LE&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;Administrative Contact:&lt;br /&gt;   8086 Limited&lt;br /&gt;   Chris Burton (Domains@8086.net)&lt;br /&gt;   +1.1636858086&lt;br /&gt;   Fax: +44.1636858085&lt;br /&gt;   17 Lowfield Lane&lt;br /&gt;   Balderton&lt;br /&gt;   Newark,  NG24 3HJ&lt;br /&gt;   GB&lt;br /&gt;&lt;br /&gt;Technical Contact:&lt;br /&gt;   8086 Limited&lt;br /&gt;   Chris Burton (Domains@8086.net)&lt;br /&gt;   +1.1636858086&lt;br /&gt;   Fax: +44.1636858085&lt;br /&gt;   17 Lowfield Lane&lt;br /&gt;   Balderton&lt;br /&gt;   Newark,  NG24 3HJ&lt;br /&gt;   GB&lt;br /&gt;&lt;br /&gt;Status: Locked&lt;br /&gt;&lt;br /&gt;Name Servers:&lt;br /&gt;   STAFF.UK00.EUROPE.CAMELDNS.COM&lt;br /&gt;   STAFF.US00.AMERICAS.CAMELDNS.COM&lt;br /&gt;   &lt;br /&gt;Creation date: 04 Jan 2003 04:08:17&lt;br /&gt;Expiration date: 04 Jan 2011 04:08:00&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;Get Noticed on the Internet!  Increase visibility for this domain name by listing it at www.whoisbusinesslistings.com&lt;br /&gt;=-=-=-=&lt;br /&gt;The data in this whois database is provided to you for information&lt;br /&gt;purposes only, that is, to assist you in obtaining information about or&lt;br /&gt;related to a domain name registration record. We make this information&lt;br /&gt;available "as is," and do not guarantee its accuracy. By submitting a&lt;br /&gt;whois query, you agree that you will use this data only for lawful&lt;br /&gt;purposes and that, under no circumstances will you use this data to: (1)&lt;br /&gt;enable high volume, automated, electronic processes that stress or load&lt;br /&gt;this whois database system providing you this information; or (2) allow,&lt;br /&gt;enable, or otherwise support the transmission of mass unsolicited,&lt;br /&gt;commercial advertising or solicitations via direct mail, electronic&lt;br /&gt;mail, or by telephone. The compilation, repackaging, dissemination or&lt;br /&gt;other use of this data is expressly prohibited without prior written&lt;br /&gt;consent from us.  &lt;br /&gt;&lt;br /&gt;We reserve the right to modify these terms at any time. By submitting &lt;br /&gt;this query, you agree to abide by these terms.&lt;br /&gt;Version 6.3 4/3/2002&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;He also owns:&lt;br /&gt;&lt;br /&gt;tng@danny:~$ whois cameldns.com&lt;br /&gt;&lt;br /&gt;Whois Server Version 2.0&lt;br /&gt;&lt;br /&gt;Domain names in the .com and .net domains can now be registered&lt;br /&gt;with many different competing registrars. Go to http://www.internic.net&lt;br /&gt;for detailed information.&lt;br /&gt;&lt;br /&gt;   Domain Name: CAMELDNS.COM&lt;br /&gt;   Registrar: ENOM, INC.&lt;br /&gt;   Whois Server: whois.enom.com&lt;br /&gt;   Referral URL: http://www.enom.com&lt;br /&gt;   Name Server: STAFF.UK00.EUROPE.CAMELDNS.COM&lt;br /&gt;   Name Server: STAFF.US00.AMERICAS.CAMELDNS.COM&lt;br /&gt;   Status: clientTransferProhibited&lt;br /&gt;   Updated Date: 18-may-2010&lt;br /&gt;   Creation Date: 12-feb-2002&lt;br /&gt;   Expiration Date: 12-feb-2011&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; Last update of whois database: Mon, 06 Sep 2010 19:40:42 UTC &lt;&lt;&lt;&lt;br /&gt;&lt;br /&gt;NOTICE: The expiration date displayed in this record is the date the &lt;br /&gt;registrar's sponsorship of the domain name registration in the registry is &lt;br /&gt;currently set to expire. This date does not necessarily reflect the expiration &lt;br /&gt;date of the domain name registrant's agreement with the sponsoring &lt;br /&gt;registrar.  Users may consult the sponsoring registrar's Whois database to &lt;br /&gt;view the registrar's reported date of expiration for this registration.&lt;br /&gt;&lt;br /&gt;TERMS OF USE: You are not authorized to access or query our Whois &lt;br /&gt;database through the use of electronic processes that are high-volume and &lt;br /&gt;automated except as reasonably necessary to register domain names or &lt;br /&gt;modify existing registrations; the Data in VeriSign Global Registry &lt;br /&gt;Services' ("VeriSign") Whois database is provided by VeriSign for &lt;br /&gt;information purposes only, and to assist persons in obtaining information &lt;br /&gt;about or related to a domain name registration record. VeriSign does not &lt;br /&gt;guarantee its accuracy. By submitting a Whois query, you agree to abide &lt;br /&gt;by the following terms of use: You agree that you may use this Data only &lt;br /&gt;for lawful purposes and that under no circumstances will you use this Data &lt;br /&gt;to: (1) allow, enable, or otherwise support the transmission of mass &lt;br /&gt;unsolicited, commercial advertising or solicitations via e-mail, telephone, &lt;br /&gt;or facsimile; or (2) enable high volume, automated, electronic processes &lt;br /&gt;that apply to VeriSign (or its computer systems). The compilation, &lt;br /&gt;repackaging, dissemination or other use of this Data is expressly &lt;br /&gt;prohibited without the prior written consent of VeriSign. You agree not to &lt;br /&gt;use electronic processes that are automated and high-volume to access or &lt;br /&gt;query the Whois database except as reasonably necessary to register &lt;br /&gt;domain names or modify existing registrations. VeriSign reserves the right &lt;br /&gt;to restrict your access to the Whois database in its sole discretion to ensure &lt;br /&gt;operational stability.  VeriSign may restrict or terminate your access to the &lt;br /&gt;Whois database for failure to abide by these terms of use. VeriSign &lt;br /&gt;reserves the right to modify these terms at any time. &lt;br /&gt;&lt;br /&gt;The Registry database contains ONLY .COM, .NET, .EDU domains and&lt;br /&gt;Registrars.=-=-=-=&lt;br /&gt;Visit AboutUs.org for more information about cameldns.com&lt;br /&gt;&lt;a href="http://www.aboutus.org/cameldns.com"&gt;AboutUs: cameldns.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Registration Service Provided By: 8086 Limited&lt;br /&gt;Contact: Domains@8086.net&lt;br /&gt;Visit: http://www.8086.net/&lt;br /&gt; &lt;br /&gt;Domain name: cameldns.com&lt;br /&gt;&lt;br /&gt;Registrant Contact:&lt;br /&gt;   8086 Limited&lt;br /&gt;   Chris Burton ()&lt;br /&gt;   &lt;br /&gt;   Fax: &lt;br /&gt;   17 Lowfield Lane&lt;br /&gt;   Balderton&lt;br /&gt;   Newark,  NG24 3HJ&lt;br /&gt;   GB&lt;br /&gt;&lt;br /&gt;Administrative Contact:&lt;br /&gt;   8086 Limited&lt;br /&gt;   Chris Burton (domains@8086.net)&lt;br /&gt;   +441636858086&lt;br /&gt;   Fax: +441636858085&lt;br /&gt;   17 Lowfield Lane&lt;br /&gt;   Balderton&lt;br /&gt;   Newark,  NG24 3HJ&lt;br /&gt;   GB&lt;br /&gt;&lt;br /&gt;Technical Contact:&lt;br /&gt;   8086 Limited&lt;br /&gt;   Chris Burton (Domains@8086.net)&lt;br /&gt;   +441636858086&lt;br /&gt;   Fax: +441636858085&lt;br /&gt;   17 Lowfield Lane&lt;br /&gt;   Balderton&lt;br /&gt;   Newark,  NG24 3HJ&lt;br /&gt;   GB&lt;br /&gt;&lt;br /&gt;Status: Locked&lt;br /&gt;&lt;br /&gt;Name Servers:&lt;br /&gt;   STAFF.UK00.EUROPE.CAMELDNS.COM&lt;br /&gt;   STAFF.US00.AMERICAS.CAMELDNS.COM&lt;br /&gt;   &lt;br /&gt;Creation date: 12 Feb 2002 06:12:03&lt;br /&gt;Expiration date: 12 Feb 2011 06:12:00&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;Get Noticed on the Internet!  Increase visibility for this domain name by listing it at www.whoisbusinesslistings.com&lt;br /&gt;=-=-=-=&lt;br /&gt;The data in this whois database is provided to you for information&lt;br /&gt;purposes only, that is, to assist you in obtaining information about or&lt;br /&gt;related to a domain name registration record. We make this information&lt;br /&gt;available "as is," and do not guarantee its accuracy. By submitting a&lt;br /&gt;whois query, you agree that you will use this data only for lawful&lt;br /&gt;purposes and that, under no circumstances will you use this data to: (1)&lt;br /&gt;enable high volume, automated, electronic processes that stress or load&lt;br /&gt;this whois database system providing you this information; or (2) allow,&lt;br /&gt;enable, or otherwise support the transmission of mass unsolicited,&lt;br /&gt;commercial advertising or solicitations via direct mail, electronic&lt;br /&gt;mail, or by telephone. The compilation, repackaging, dissemination or&lt;br /&gt;other use of this data is expressly prohibited without prior written&lt;br /&gt;consent from us.  &lt;br /&gt;&lt;br /&gt;We reserve the right to modify these terms at any time. By submitting &lt;br /&gt;this query, you agree to abide by these terms.&lt;br /&gt;Version 6.3 4/3/2002&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;tng@danny:~$ whois camelbackup.com&lt;br /&gt;&lt;br /&gt;Whois Server Version 2.0&lt;br /&gt;&lt;br /&gt;Domain names in the .com and .net domains can now be registered&lt;br /&gt;with many different competing registrars. Go to http://www.internic.net&lt;br /&gt;for detailed information.&lt;br /&gt;&lt;br /&gt;   Domain Name: CAMELBACKUP.COM&lt;br /&gt;   Registrar: ENOM, INC.&lt;br /&gt;   Whois Server: whois.enom.com&lt;br /&gt;   Referral URL: http://www.enom.com&lt;br /&gt;   Name Server: STAFF.UK00.EUROPE.CAMELDNS.COM&lt;br /&gt;   Name Server: STAFF.US00.AMERICAS.CAMELDNS.COM&lt;br /&gt;   Status: clientTransferProhibited&lt;br /&gt;   Updated Date: 28-jan-2010&lt;br /&gt;   Creation Date: 12-feb-2002&lt;br /&gt;   Expiration Date: 12-feb-2011&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; Last update of whois database: Mon, 06 Sep 2010 19:33:33 UTC &lt;&lt;&lt;&lt;br /&gt;&lt;br /&gt;NOTICE: The expiration date displayed in this record is the date the &lt;br /&gt;registrar's sponsorship of the domain name registration in the registry is &lt;br /&gt;currently set to expire. This date does not necessarily reflect the expiration &lt;br /&gt;date of the domain name registrant's agreement with the sponsoring &lt;br /&gt;registrar.  Users may consult the sponsoring registrar's Whois database to &lt;br /&gt;view the registrar's reported date of expiration for this registration.&lt;br /&gt;&lt;br /&gt;TERMS OF USE: You are not authorized to access or query our Whois &lt;br /&gt;database through the use of electronic processes that are high-volume and &lt;br /&gt;automated except as reasonably necessary to register domain names or &lt;br /&gt;modify existing registrations; the Data in VeriSign Global Registry &lt;br /&gt;Services' ("VeriSign") Whois database is provided by VeriSign for &lt;br /&gt;information purposes only, and to assist persons in obtaining information &lt;br /&gt;about or related to a domain name registration record. VeriSign does not &lt;br /&gt;guarantee its accuracy. By submitting a Whois query, you agree to abide &lt;br /&gt;by the following terms of use: You agree that you may use this Data only &lt;br /&gt;for lawful purposes and that under no circumstances will you use this Data &lt;br /&gt;to: (1) allow, enable, or otherwise support the transmission of mass &lt;br /&gt;unsolicited, commercial advertising or solicitations via e-mail, telephone, &lt;br /&gt;or facsimile; or (2) enable high volume, automated, electronic processes &lt;br /&gt;that apply to VeriSign (or its computer systems). The compilation, &lt;br /&gt;repackaging, dissemination or other use of this Data is expressly &lt;br /&gt;prohibited without the prior written consent of VeriSign. You agree not to &lt;br /&gt;use electronic processes that are automated and high-volume to access or &lt;br /&gt;query the Whois database except as reasonably necessary to register &lt;br /&gt;domain names or modify existing registrations. VeriSign reserves the right &lt;br /&gt;to restrict your access to the Whois database in its sole discretion to ensure &lt;br /&gt;operational stability.  VeriSign may restrict or terminate your access to the &lt;br /&gt;Whois database for failure to abide by these terms of use. VeriSign &lt;br /&gt;reserves the right to modify these terms at any time. &lt;br /&gt;&lt;br /&gt;The Registry database contains ONLY .COM, .NET, .EDU domains and&lt;br /&gt;Registrars.=-=-=-=&lt;br /&gt;Visit AboutUs.org for more information about camelbackup.com&lt;br /&gt;&lt;a href="http://www.aboutus.org/camelbackup.com"&gt;AboutUs: camelbackup.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Registration Service Provided By: 8086 Limited&lt;br /&gt;Contact: Domains@8086.net&lt;br /&gt;Visit: http://www.8086.net/&lt;br /&gt; &lt;br /&gt;Domain name: camelbackup.com&lt;br /&gt;&lt;br /&gt;Registrant Contact:&lt;br /&gt;   NA&lt;br /&gt;   Colin Drew ()&lt;br /&gt;   &lt;br /&gt;   Fax: &lt;br /&gt;   12, Settington Avenue&lt;br /&gt;   Chatham, KENT ME5 0AH&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;Administrative Contact:&lt;br /&gt;   8086 Limited&lt;br /&gt;   Chris Burton (Domains@8086.net)&lt;br /&gt;   +1.1636858086&lt;br /&gt;   Fax: +44.1636858085&lt;br /&gt;   17 Lowfield Lane&lt;br /&gt;   Balderton&lt;br /&gt;   Newark,  NG24 3HJ&lt;br /&gt;   GB&lt;br /&gt;&lt;br /&gt;Technical Contact:&lt;br /&gt;   8086 Limited&lt;br /&gt;   Chris Burton (Domains@8086.net)&lt;br /&gt;   +1.1636858086&lt;br /&gt;   Fax: +44.1636858085&lt;br /&gt;   17 Lowfield Lane&lt;br /&gt;   Balderton&lt;br /&gt;   Newark,  NG24 3HJ&lt;br /&gt;   GB&lt;br /&gt;&lt;br /&gt;Status: Locked&lt;br /&gt;&lt;br /&gt;Name Servers:&lt;br /&gt;   STAFF.UK00.EUROPE.CAMELDNS.COM&lt;br /&gt;   STAFF.US00.AMERICAS.CAMELDNS.COM&lt;br /&gt;   &lt;br /&gt;Creation date: 12 Feb 2002 06:12:06&lt;br /&gt;Expiration date: 12 Feb 2011 06:12:00&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;Get Noticed on the Internet!  Increase visibility for this domain name by listing it at www.whoisbusinesslistings.com&lt;br /&gt;=-=-=-=&lt;br /&gt;The data in this whois database is provided to you for information&lt;br /&gt;purposes only, that is, to assist you in obtaining information about or&lt;br /&gt;related to a domain name registration record. We make this information&lt;br /&gt;available "as is," and do not guarantee its accuracy. By submitting a&lt;br /&gt;whois query, you agree that you will use this data only for lawful&lt;br /&gt;purposes and that, under no circumstances will you use this data to: (1)&lt;br /&gt;enable high volume, automated, electronic processes that stress or load&lt;br /&gt;this whois database system providing you this information; or (2) allow,&lt;br /&gt;enable, or otherwise support the transmission of mass unsolicited,&lt;br /&gt;commercial advertising or solicitations via direct mail, electronic&lt;br /&gt;mail, or by telephone. The compilation, repackaging, dissemination or&lt;br /&gt;other use of this data is expressly prohibited without prior written&lt;br /&gt;consent from us.  &lt;br /&gt;&lt;br /&gt;We reserve the right to modify these terms at any time. By submitting &lt;br /&gt;this query, you agree to abide by these terms.&lt;br /&gt;Version 6.3 4/3/2002&lt;br /&gt;&lt;br /&gt;and there is a Colin Drew! Who would have thought?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linkedin.com lists Colin Drew (of Barefruit) &lt;a href="http://uk.linkedin.com/in/colindrew"&gt;http://uk.linkedin.com/in/colindrew&lt;/a&gt; as having worked for Dartford Borough Council between 1990 and 1995. Last time I checked, Dartford is very commutable to Chatham (&lt;a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=chatham,+kent&amp;sll=51.361,0.5362&amp;sspn=0.065384,0.220757&amp;g=chatham&amp;ie=UTF8&amp;hq=&amp;hnear=Strood,+Chatham,+Kent,+United+Kingdom&amp;ll=51.405203,0.33989&amp;spn=0.130642,0.441513&amp;t=h&amp;z=11"&gt;Google Map of Chatham and Dartford&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;What are the chances of that ? - one DNS expert (Colin Drew) is based in Chatham and is so profoundly against DNS hijacking that he signs petitions against it and another DNS expert (Colin Drew) used to work in Dartford and now actively pollutes DNS results. &lt;br /&gt;&lt;br /&gt;I think Colin Drew and Colin Drew should meet up in a pub somewhere near Gravesend and settle their differences once and for all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6310749225427101382?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6310749225427101382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6310749225427101382' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6310749225427101382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6310749225427101382'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/09/barefruitcouk-web-misdirection-monkeys.html' title='Colin Drew versus Colin Drew: barefruit.co.uk web misdirection monkeys'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-5542800973096787371</id><published>2010-09-06T10:44:00.000-07:00</published><updated>2010-09-06T10:46:02.353-07:00</updated><title type='text'>BT Hijack DNS</title><content type='html'>BT have started using barefruit.co.uk to hijack DNS NXDOMAINS to point to their marketing results. I've got my ADSL with BT using a Vanilla HomeHub 2.0 and just checked my router and I'm currently using 62.6.40.178 as my primary DNS server, 194.72.65.69 as my secondary.&lt;br /&gt;&lt;br /&gt;Checking google's Name servers:&lt;br /&gt;&lt;br /&gt;tng@danny:~$ dig @8.8.8.8 sausage.ora &lt;br /&gt;&lt;br /&gt;; &lt;&lt;&gt;&gt; DiG 9.6.1-P2 &lt;&lt;&gt;&gt; @8.8.8.8 sausage.ora&lt;br /&gt;; (1 server found)&lt;br /&gt;;; global options: +cmd&lt;br /&gt;;; Got answer:&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 30604&lt;br /&gt;;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0&lt;br /&gt;&lt;br /&gt;;; QUESTION SECTION:&lt;br /&gt;;sausage.ora.   IN A&lt;br /&gt;&lt;br /&gt;;; AUTHORITY SECTION:&lt;br /&gt;.   86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010090600 1800 900 604800 86400&lt;br /&gt;&lt;br /&gt;;; Query time: 217 msec&lt;br /&gt;;; SERVER: 8.8.8.8#53(8.8.8.8)&lt;br /&gt;;; WHEN: Mon Sep  6 18:24:00 2010&lt;br /&gt;;; MSG SIZE  rcvd: 104&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;tng@danny:~$ dig @62.6.40.178 sausage.ora&lt;br /&gt;&lt;br /&gt;; &lt;&lt;&gt;&gt; DiG 9.6.1-P2 &lt;&lt;&gt;&gt; @62.6.40.178 sausage.ora&lt;br /&gt;; (1 server found)&lt;br /&gt;;; global options: +cmd&lt;br /&gt;;; Got answer:&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 32766&lt;br /&gt;;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0&lt;br /&gt;&lt;br /&gt;;; QUESTION SECTION:&lt;br /&gt;;sausage.ora.   IN A&lt;br /&gt;&lt;br /&gt;;; ANSWER SECTION:&lt;br /&gt;sausage.ora.  30 IN A 92.242.132.15&lt;br /&gt;&lt;br /&gt;;; Query time: 56 msec&lt;br /&gt;;; SERVER: 62.6.40.178#53(62.6.40.178)&lt;br /&gt;;; WHEN: Mon Sep  6 18:24:31 2010&lt;br /&gt;;; MSG SIZE  rcvd: 45&lt;br /&gt;&lt;br /&gt;tng@danny:~$ host 92.242.132.15&lt;br /&gt;15.132.242.92.in-addr.arpa domain name pointer unallocated.barefruit.co.uk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;tng@danny:~host 62.6.40.178&lt;br /&gt;178.40.6.62.in-addr.arpa domain name pointer indnsc71.ukcore.bt.net.&lt;br /&gt;178.40.6.62.in-addr.arpa domain name pointer indnsc71.bt.net.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think this looks very iffy to me following the fun they had with Phorm.&lt;br /&gt;&lt;br /&gt;tng@danny:~$ dig @194.74.65.69 sausage.ora&lt;br /&gt;&lt;br /&gt;; &lt;&lt;&gt;&gt; DiG 9.6.1-P2 &lt;&lt;&gt;&gt; @194.74.65.69 sausage.ora&lt;br /&gt;; (1 server found)&lt;br /&gt;;; global options: +cmd&lt;br /&gt;;; Got answer:&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 63921&lt;br /&gt;;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0&lt;br /&gt;&lt;br /&gt;;; QUESTION SECTION:&lt;br /&gt;;sausage.ora.   IN A&lt;br /&gt;&lt;br /&gt;;; ANSWER SECTION:&lt;br /&gt;sausage.ora.  30 IN A 92.242.132.15&lt;br /&gt;&lt;br /&gt;;; Query time: 121 msec&lt;br /&gt;;; SERVER: 194.74.65.69#53(194.74.65.69)&lt;br /&gt;;; WHEN: Mon Sep  6 18:32:30 2010&lt;br /&gt;;; MSG SIZE  rcvd: 45&lt;br /&gt;&lt;br /&gt;tng@danny:~$ host 92.242.132.15&lt;br /&gt;15.132.242.92.in-addr.arpa domain name pointer unallocated.barefruit.co.uk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When will BT learn that they are just a pipe?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-5542800973096787371?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/5542800973096787371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=5542800973096787371' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5542800973096787371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5542800973096787371'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/09/bt-hijack-dns.html' title='BT Hijack DNS'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6258318287207030097</id><published>2010-08-25T05:26:00.000-07:00</published><updated>2010-08-25T05:36:08.956-07:00</updated><title type='text'>Android phone picture shrinker for publishing to picasaweb</title><content type='html'>An old script still proving useful. I don't want to break my Picasa storage limit just yet. This one puts 800x600 photos up onto the tinterweb, and stores the full size images locally on my NFS share /photos/phone_photos_&lt;todaysdate&gt;.&lt;br /&gt;&lt;br /&gt;Please adjust your settings according before using it. Requires PerlMagick and Google command line.&lt;br /&gt;&lt;br /&gt;Script can also be downloaded &lt;a href="http://reversemidastouch.com/code/syncshrink.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#!/usr/bin/perl -w&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;##############################################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# syncshrink           Version .05                                           #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Copyright 2010 tng@chegwin.org       All rights reserved                   #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Created 3-Jun-2010                     Last Modified 25-Aug-2010            #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;##############################################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   This program is free software; you can redistribute it and/or modify&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   it under the terms of the GNU General Public License as published by&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   the Free Software Foundation; either version 2 of the License, or&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   (at your option) any later version.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   This program is distributed in the hope that it will be useful,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   GNU General Public License for more details.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   You should have received a copy of the GNU General Public License&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   along with this program; if not, write to the Free Software&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;use strict;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;use Image::Magick;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;use File::Copy;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#3264     2448&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $portrait_columns="2448";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $landscape_columns="3264";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my ($sec,$min,$hour,$mday,$month,$year,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    $wday,$yday,$isdst) = localtime time;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $directory_write_to="phone_photos_";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $image_directory="/media/08A2-BE0A/DCIM/Camera/";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$month++;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$year+=1900;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $picasa_upload_name="$mday"."_$month"."_$year";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $write_to_directory="/photos/$directory_write_to"."$picasa_upload_name";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $upload_directory="/tmp/picasa_upload/";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;exit "Sorry, no phone found $!" unless (-e "$image_directory");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;exit "Sorry, no output directory made $!" unless (mkdir ("$write_to_directory",0777));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;exit "Sorry, no upload directory made $!" unless (mkdir ("$upload_directory",0777));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;opendir (IMG_DIR,"$image_directory") or die "couldn't open ./ $!";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foreach (sort(readdir(IMG_DIR))){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $file=$_;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;next unless /\.JPG/i;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;next if /_sm.jpg/;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;next if /_med.jpg/;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;print ("$_\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $sm_filename=$file;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$sm_filename =~ s/\.jpg//g; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$sm_filename =~ s/\.JPG//g; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $pic_name=$sm_filename;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $med_filename=$sm_filename;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$med_filename .= "_med.jpg";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;print ("Creating $med_filename");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $p = new Image::Magick;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my $image = new Image::Magick;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$image-&gt;Read("$image_directory/$file");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;my ($current_columns,$current_rows)=$image-&gt;Get('base-columns','base-rows');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;print ("$current_columns\t $current_rows\n");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if ($current_columns &lt;= $portrait_columns){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;print ("portrait\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         $image-&gt;Scale(geometry =&gt; '600x800');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     } elsif ($current_columns &gt;&gt; $landscape_columns){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;print ("landscape\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#If landscape then create 640 x 480 and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#100 x 75&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         $image-&gt;Scale(geometry =&gt; '800x600');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     } else {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;print ("Something is wrong - this image does not have the correct number of columns");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         $image-&gt;Scale(geometry =&gt; '800x600');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         $image-&gt;Write("$upload_directory/$med_filename");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     move ("$image_directory/$file","$write_to_directory/$file");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;closedir (IMG_DIR);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;print ("\n Attempting to run: google picasa create --title $picasa_upload_name $upload_directory\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;open (UPLOAD_GOOGLE,"google picasa create --title $picasa_upload_name $upload_directory/* |") or die "Cannot upload t&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;o picasa $!";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;close (UPLOAD_GOOGLE);&lt;/span&gt;&lt;/todaysdate&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6258318287207030097?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6258318287207030097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6258318287207030097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6258318287207030097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6258318287207030097'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/08/android-phone-picture-shrinker-for.html' title='Android phone picture shrinker for publishing to picasaweb'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-2242853305100256408</id><published>2010-07-15T13:06:00.000-07:00</published><updated>2010-07-15T13:13:14.445-07:00</updated><title type='text'>BT Mobile broadband and E180 Huawei under Ubuntu 10.04</title><content type='html'>Looks like there was a SNAFU somewhere between Ubuntu 9.10 and 10.04. The BT Mobile dongle has stopped working.&lt;br /&gt;&lt;br /&gt;There is a workaround listed here:&lt;br /&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=1395965&amp;amp;page=2"&gt;&lt;br /&gt;http://ubuntuforums.org/showthread.php?t=1395965&amp;amp;page=2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In my case, I setup the standard BT Mobile broadband inside NetworkManager.&lt;br /&gt;&lt;br /&gt;Install usb-setserial.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;$ sudo apt-get install usb-modeswitch&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then run the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;$ sudo /sbin/modprobe usbserial vendor=0x12d1 product=0x1003&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;$ sudo lsmod | grep  usb&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;usbserial              33019  1  option&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;usb_storage            39425  1 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You should then be able to connect using the Network Manager BT Mobile connection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-2242853305100256408?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/2242853305100256408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=2242853305100256408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2242853305100256408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2242853305100256408'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/07/bt-mobile-broadband-and-e180-huawei.html' title='BT Mobile broadband and E180 Huawei under Ubuntu 10.04'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-784440765110200592</id><published>2010-06-29T11:11:00.000-07:00</published><updated>2010-06-29T11:26:38.778-07:00</updated><title type='text'>Remembering OS X prints via CUPS</title><content type='html'>Epson Stylus Photo Colour R300 and Intel iMac Aluminium running Snow Leopard.&lt;br /&gt;The print quality is bobbins with horizontal banding (looks like it is printing in low quality mode). The menu where the print settings should be (double click on printer, click printer setup and tab drivers) is blank.&lt;br /&gt;&lt;br /&gt;Lots of reports in the forums of horizontal lines in the output (banding) but the print heads/calibration/nozzles all fine printing from an SD Card.&lt;br /&gt;&lt;br /&gt;There is nothing wrong with this printer or Snow Leopard, all we need to do is find the CUPS advanced print settings.&lt;br /&gt;&lt;br /&gt;Don't install the drivers off the disk if you have Snow Leopard. Let OS X do it's thing and download the driver if it needs it.  The Epson software is bobbins and lets face it, a printer with a front panel doesn't need to let anything know it is short of ink.&lt;br /&gt;&lt;br /&gt;Using Safari Navigate to http://localhost:631, select your printer, then "Set Default Options" from the right drop down menu ("Administration").&lt;br /&gt;&lt;br /&gt;Every permutation you could wish for is there. (Select the correct paper type, set resolution to 720x720dpi and Print Quality to Photo RPM).  In my particular experience, the Epson driver provided a more lively picture than the Gutenprint, but the print quality of Gutenprint was slightly better. The printer worked slightly faster using the Epson driver than Gutenprint.&lt;br /&gt;&lt;br /&gt;You should now be able to get fantastic printouts from an ageing printer and Snow Leopard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-784440765110200592?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/784440765110200592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=784440765110200592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/784440765110200592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/784440765110200592'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/06/remembering-os-x-prints-via-cups.html' title='Remembering OS X prints via CUPS'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-1821750657014702025</id><published>2010-03-15T12:04:00.000-07:00</published><updated>2010-03-15T12:31:54.441-07:00</updated><title type='text'>Arduino, LM34 temperature sensor, DRobotics Arduino LCD shield and LiquidCrystal.h</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;One of the problems with the &lt;a href="http://www.droboticsonline.com/index.php/review/product/list/id/7/"&gt;DRobotics Arduino LCD shield&lt;/a&gt; is that the documentation suggests the use of a LCD_4Bit_mod 'd library. This leads to all sorts of fun and games when attempting to print floats and anything else other than chars or ints. I gave up. I like to use standard libraries and code wherever possible so decided to wade through the .cpp to find the pins, to allow them to be mapped onto the standard Liquid crystal code (LiquidCrystal.h).&lt;br /&gt;&lt;br /&gt;The prescient bit of mapping code is for the shield is:&lt;br /&gt;&lt;br /&gt;LiquidCrystal lcd(8, 9, 4, 5, 6, 7);&lt;br /&gt;&lt;br /&gt;The second problem is that the DRobotics shield doesn't use the nice passthrough pins found on other shields so I ordered the &lt;a href="http://www.coolcomponents.co.uk/catalog/index.php?cPath=48_49"&gt;Arduino header pins from coolcomponents.co.uk&lt;/a&gt; and soldered them on.&lt;br /&gt;&lt;br /&gt;This is my temperature probe test circuit - &lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235965293"&gt;cribbed from here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EjK7a75bRts/S56G6--QdHI/AAAAAAAAAFk/i756dtow0kA/s1600-h/lm34_arduino_sm.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 190px; height: 200px;" src="http://4.bp.blogspot.com/_EjK7a75bRts/S56G6--QdHI/AAAAAAAAAFk/i756dtow0kA/s200/lm34_arduino_sm.jpg" alt="" id="BLOGGER_PHOTO_ID_5448940947059537010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the progress code to tie the whole thing together:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/*&lt;br /&gt; LiquidCrystal library with DRobotics shield.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pins configured with DRobotics LCD shield.&lt;br /&gt;http://www.droboticsonline.com/index.php/review/product/list/id/7/&lt;br /&gt;Example circuit for printing temperature from an LM34.&lt;br /&gt;&lt;br /&gt;The circuit:&lt;br /&gt;* LCD RS pin to digital pin 8&lt;br /&gt;* LCD Enable pin to digital pin 9&lt;br /&gt;* LCD D4 pin to digital pin 4&lt;br /&gt;* LCD D5 pin to digital pin 5&lt;br /&gt;* LCD D6 pin to digital pin 6&lt;br /&gt;* LCD D7 pin to digital pin 7&lt;br /&gt;&lt;br /&gt;LM34 into +5V, GND&lt;br /&gt;Middle pin to Analog pin 1 (Analog 0 is used by the DRobotics shield)&lt;br /&gt;&lt;br /&gt;Library originally added 18 Apr 2008&lt;br /&gt;by David A. Mellis&lt;br /&gt;library modified 5 Jul 2009&lt;br /&gt;by Limor Fried (http://www.ladyada.net)&lt;br /&gt;example added 9 Jul 2009&lt;br /&gt;by Tom Igoe&lt;br /&gt;modified 25 July 2009&lt;br /&gt;by David A. Mellis&lt;br /&gt;modified 15 Mar 2010&lt;br /&gt;by Tim Gibbon&lt;br /&gt;&lt;br /&gt;Modified from&lt;br /&gt;http://www.arduino.cc/en/Tutorial/LiquidCrystal&lt;br /&gt;http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235965293&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;// include the library code:&lt;br /&gt;#include &lt;liquidcrystal.h&gt;&lt;br /&gt;int sensor_pin = 1;        // the analog pin for LM34 temp sensor - Cannot use pin 0 as it is used for something by DRobotics LCD shield&lt;br /&gt;float sensor_reading = 0.0;        // variable to store the value coming from the sensor&lt;br /&gt;float vref = 1.084;        // variable to store the voltage reference used (check for validity with a DMM)&lt;br /&gt;int fahrenheit = 0;        // variable to store the actual temperature&lt;br /&gt;int acquisition_timer = 1000;        // variable to control the time between updates (in ms)&lt;br /&gt;int centigrade = 0;&lt;br /&gt;int loop_counter = 0;&lt;br /&gt;&lt;br /&gt;// initialize the library with the numbers of the interface pins - suitable for DRobotics LCD Keypad shield&lt;br /&gt;LiquidCrystal lcd(8, 9, 4, 5, 6, 7);&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt; // set up the LCD's number of columns and rows:&lt;br /&gt; lcd.begin(16,2);&lt;br /&gt; pinMode( sensor_pin, INPUT );        // set LM34 temp sensor pin as an input&lt;br /&gt; analogReference(INTERNAL);        // set the analog reference to the 1.1V internal reference&lt;br /&gt; delay(1000);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;&lt;br /&gt; sensor_reading = analogRead(sensor_pin);         // stores the digitized (0 - 1023) analog reading from the LM34&lt;br /&gt; fahrenheit = (100.0 * sensor_reading * vref)/1023;   // calculates the actual fahrenheit temperature&lt;br /&gt; centigrade = (((5.0/9.0))*(fahrenheit-32.0)); //conversion to degrees C&lt;br /&gt;&lt;br /&gt; // set the cursor to (0,0):&lt;br /&gt; lcd.setCursor(0, 0);&lt;br /&gt;&lt;br /&gt;  lcd.print("Temp=");&lt;br /&gt;  lcd.print(centigrade);&lt;br /&gt;  lcd.print("C");&lt;br /&gt;  //Print useful counter on the second row&lt;br /&gt;&lt;br /&gt;  lcd.setCursor(0,1);&lt;br /&gt;  lcd.print(loop_counter);&lt;br /&gt;  loop_counter++;&lt;br /&gt;  delay(5000);&lt;br /&gt; // turn off automatic scrolling&lt;br /&gt; lcd.noAutoscroll();&lt;br /&gt; // clear screen for the next loop:&lt;br /&gt; lcd.clear();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/liquidcrystal.h&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download code &lt;a href="http://www.reversemidastouch.com/code/lm34_arduino_drobotics_lcd.pde"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-1821750657014702025?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/1821750657014702025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=1821750657014702025' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1821750657014702025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1821750657014702025'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/03/arduino-lm34-temperature-sensor.html' title='Arduino, LM34 temperature sensor, DRobotics Arduino LCD shield and LiquidCrystal.h'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EjK7a75bRts/S56G6--QdHI/AAAAAAAAAFk/i756dtow0kA/s72-c/lm34_arduino_sm.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-4930582458041756510</id><published>2010-01-20T04:05:00.000-08:00</published><updated>2010-01-20T05:13:41.574-08:00</updated><title type='text'>TVonics DTR-HV250 versus BTVision</title><content type='html'>&lt;span style=";font-family:arial;font-size:130%;"  &gt;How I learned to stop worrying and embraced the penguin.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;For my sins, I bought a BTVision box - 90 quid, no contract. OK, OK, so it runs Microsoft Mediaroom and my recordings are trapped on there forever. No recording off the box onto a DVD drive, no sneaking the drive off and mounting the filesystem. No nothing.&lt;br /&gt;&lt;br /&gt;Big mistake.&lt;br /&gt;&lt;br /&gt;After 2 months of fairly heavy use (digital switchover in Early November, through until last week) we had no problems. Yes, I'd filled the disk up once with kids telly and christmas recordings, but no problems. After the box had been left on all day, I noticed that the picture was stuttering and the box was squeaking at high volume. The picture was all over the place. The kids had to revert to a older pre-recorded Simpsons which worked just fine. We thought, the problem was associated with the Ramsbottom relay being a bit iffy/bad weather then.  Oddly, the TV picture was perfect with no breakup.&lt;br /&gt;&lt;br /&gt;The next day, I noticed that after the box had been on for two hours, it was squeaking again and the picture was broken up on all channels. Previously it had been fine. How odd. The problem did not right itself through the day and recordings were again shot. I checked the box and the signal strength was at 100% and the signal quality was jumping around between 30 and 80%.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-size:100%;"&gt;So I rang BT and explained that the picture broke up and that I'd reset the box. They asked me to check the aerial and the coax RF cable. I explained that the TV had a Signal strength of 100% and errors were negligible. They told me I had to check the aerial and coax RF cable and that the BT vision box needs more signal quality "because it has two tuners". I explained that the TV has a fantastic signal strength and negligible errors (pre viteri 10^-4, post viteri 0). They told me I had to check the aerial and coax. Back and forth we went. There is only one way to win this argument, and that is to have a second BT vision box. They said they could send an engineer out after I'd had my cabling and aerial checked and a signal booster put onto the line. If the fault was found to be with my aerial/cabling, I would receive a bill for 100 quid.  I was reluctant to waste another 25 quid on getting an aerial check, 20 quid on a booster and  90 quid (or even 45 quid on ebay) on a BT box to prove their first box was shoddy and has heat related failure.&lt;br /&gt;The next step in the 1st line support checklist after an aerial check was a full factory reset of the BT Vision box. This would lose all my recordings (Why, oh why can't it reindex them based on the upload metadata being sent back to BTVision HQ?).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was unwilling to get one of their engineers out, based on the fact they would point the finger of blame at my aerial or cabling.  &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-size:100%;"&gt;The box sits on top of my 50W amplifier, so it gets a little hot, but nothing excessive.&lt;br /&gt;&lt;br /&gt;Sure enough, the next day, the BTVision box worked until it got too hot (about 2 hours).&lt;br /&gt;&lt;br /&gt;So I decided to buy a &lt;a href="http://www.tvonics.com/digital-tv-recorders/dtr-hv250.html"&gt;TVonics DTR-HV250&lt;/a&gt; after reading &lt;a href="http://www.reghardware.co.uk/2010/01/12/review_hd_dtr_hv250/"&gt;the review&lt;/a&gt; on the register. Fantastic box, small, designed (and maybe built) in South Wales. Great experience from them buying direct, lovely box. Nice and quiet and noticeably zippy compared to BT vision, gets on with the job well. Fabulous remote as the remote can control our TV too (select input button is so handy). No problem with the signal either even with a (cough) Dual tuner. Signal strength is 100%.&lt;br /&gt;The system allows playlists, which is great for the kids as we can daisy chain recordings together. BT Vision still can't do this, despite the software being nearly 3 years old.&lt;br /&gt; Two HDMI inputs, one output, runs Linux and uses XFS as it filesystem. It uses only 2W in standby compared to 11W for BTvision, so it should save us in the long run. If the unit is left on standby for a minimum of 15 hours / day, saving 7Watts :&lt;br /&gt;15 hours * 7W = 105Watthours = 0.105 kWh.&lt;br /&gt;Over a year, 365.25 * .105 = 38.35 kWh at 10 pence per unit = 3.84 UKP. So it will pay for itself in 70 years too.&lt;br /&gt;&lt;br /&gt;I noticed in the manual that the GPL and LGPL were mentioned, but no source code on their website. I contacted them and by return of post, they provided the source for the box on a CD. Fantastic service - they include the following as their README:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;TVonics DTR-HV250 LGPL/GPL source code&lt;br /&gt;--------------------------------------&lt;br /&gt;&lt;br /&gt;This source code is for TVonics DTR-HV250 open source releases V1.1.Axxx.M170 to V1.1.Axxx.M172.&lt;br /&gt;&lt;br /&gt;All base rpm files are also available from http://www.stlinux.com.&lt;br /&gt;&lt;br /&gt;The source code is divided into a number of areas, see the correponding .txt file for details:&lt;br /&gt;&lt;br /&gt;The compiler and toolchain - Toolchain.txt&lt;br /&gt;The Linux Kernel           - Kernel.txt&lt;br /&gt;The Libraries              - Libraries.txt&lt;br /&gt;Third Party software       - ThirdParty.txt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Details of the GPL and LGPL licences can be found in Licences.txt&lt;br /&gt;&lt;br /&gt;Please note that TVonics Solutions Ltd does not offer support on building or installing these software sources.&lt;br /&gt;For further queries regarding these sources, including GPL source/LGPL requests please contact us via our website:&lt;br /&gt;&lt;br /&gt;http://www.tvonics.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Happy Hacking!&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;I honestly think that it doesn't get much better than this. TVonics: a fantastic service, employing smart UK engineers, all the source available and a well built and though out PVR.&lt;br /&gt;&lt;br /&gt;Goodbye BT Vision and your non-logical first line support, DRM, lack of portability and Orwellian reporting.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-4930582458041756510?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/4930582458041756510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=4930582458041756510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4930582458041756510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4930582458041756510'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2010/01/tvonics-dtr-hv250-versus-btvision.html' title='TVonics DTR-HV250 versus BTVision'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-1758284806342481213</id><published>2009-11-11T13:20:00.000-08:00</published><updated>2009-11-12T04:25:49.540-08:00</updated><title type='text'>Building a customised quiet NAS using Ubuntu server 9.04: Part 5 (iozone NFS benchmarking)</title><content type='html'>The NFS server was benchmarked using iozone. Installed via:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo apt-get install iozone3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Iozone was run using the following parameters:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;iozone -a -R -c -U /communal/ -f /communal/testfile&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Firstly iozone was benchmarked using a local client, Vostro 1700 writing to it's non-system internal disk (SATA II, 2.5" 7200RPM drive).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EjK7a75bRts/Svsr1ytf05I/AAAAAAAAAEQ/ShKCkJCMAks/s1600-h/write_local_disk.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_EjK7a75bRts/Svsr1ytf05I/AAAAAAAAAEQ/ShKCkJCMAks/s200/write_local_disk.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5402960381106705298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The client then mounted the NFS share under /communal (entry added to /etc/fstab) and performance tests run. The initial runs were performed using two homeplugs (Comtrend 902s powerline adaptors in the same room, gigabit switch at either end). It was discovered that the best throughput occurred when the read and wsize were set to 32k (rsize=32768, wsize=32768). The diagram below shows the run for this optimal rsize.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EjK7a75bRts/SvssaG3TfYI/AAAAAAAAAEY/wMlLk0fSNaU/s1600-h/write_homeplug_32768_rwsize.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_EjK7a75bRts/SvssaG3TfYI/AAAAAAAAAEY/wMlLk0fSNaU/s200/write_homeplug_32768_rwsize.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5402961004991839618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; However, the throughput seemed to max out at 2.4MB/s (equivalent to 20Mbit/s). This was not good news. This required a check with a direct connection between the client and server. (The Foxconn R3-S10 only has a 100Mbit/s card, so our maximum throughput will be 12.5MB/s).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EjK7a75bRts/SvstyqKBRrI/AAAAAAAAAEg/zPM3CQGhKCw/s1600-h/write_direct_16834.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_EjK7a75bRts/SvstyqKBRrI/AAAAAAAAAEg/zPM3CQGhKCw/s200/write_direct_16834.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5402962526294066866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EjK7a75bRts/Svst6ROc6oI/AAAAAAAAAEo/8rTKlPECzkg/s1600-h/write_direct_32768.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_EjK7a75bRts/Svst6ROc6oI/AAAAAAAAAEo/8rTKlPECzkg/s200/write_direct_32768.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5402962657040722562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We achieve 10.5MB/s with a wsize and rsize of 32768- excellent. The network is almost certainly our bottleneck.&lt;br /&gt;&lt;br /&gt;It looks like we have a problem with the Powerline adaptors or my electrical wiring. The adaptors are in the same room, on the same breaker. The comtrend web interface states that the upload and download speeds are exceeding 100Mbit/s. Several repetitions were made of iozone and a dd tests.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;dd if=/dev/zero of=/communal/bigfile bs=1024k count=16&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This showed we could not achieve &gt;3MB/s using the powerlines, but consistently acheived 10MB/s using a direct cable connection.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Lessons learned&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Carefully check powerline networking.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The NFS server is probably bound by the 100Mb/s network. Gigabit networking kit would be needed to prove this.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Maximum values in the iozone tests were acheived using a rsize and a wsize of 32768. See below&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ grep communal /etc/fstab&lt;br /&gt;datastore:/communal /communal nfs hard,rw,addr=192.168.1.23,rsize=32768,wsize=32768 0 0&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-1758284806342481213?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/1758284806342481213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=1758284806342481213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1758284806342481213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1758284806342481213'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/11/building-customised-quiet-nas-using.html' title='Building a customised quiet NAS using Ubuntu server 9.04: Part 5 (iozone NFS benchmarking)'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EjK7a75bRts/Svsr1ytf05I/AAAAAAAAAEQ/ShKCkJCMAks/s72-c/write_local_disk.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-7196355479993837288</id><published>2009-10-22T01:08:00.000-07:00</published><updated>2009-10-22T01:14:34.916-07:00</updated><title type='text'>Creating OS X NFS client mounts (Quiet NAS part 4)</title><content type='html'>The final stage is to add the mounts for the clients - this script works for OS X (pre-Leopard). This script does the work for us:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;# Script: create_mounts.sh&lt;br /&gt;# Author: Tim Gibon tim.gibbon@lunarlite.co.uk&lt;br /&gt;# Date: 22-Oct-2009&lt;br /&gt;# Description: Remove and create an OS X mount point for pre-Leopard clients.&lt;br /&gt;# Script will error if run more than once. Edit before use.&lt;br /&gt;&lt;br /&gt;# Delete old mount from NSLU2 server&lt;br /&gt;nicl . -delete /mounts/datastore:\\/share\\/hdd\\/data\\/communal&lt;br /&gt;# In case we need to run the script multiple times, fresh start the communal share.&lt;br /&gt;nicl . -delete /mounts/datastore:\\/communal&lt;br /&gt;nicl . -create /mounts/datastore:\\/communal&lt;br /&gt;# Set properties of share&lt;br /&gt;nicl . -append /mounts/datastore:\\/communal type nfs&lt;br /&gt;nicl . -append /mounts/datastore:\\/communal dir /Network/communal&lt;br /&gt;nicl . -append /mounts/datastore:\\/communal opts "rw"&lt;br /&gt;# Increase NFS read and write NFS size of client - increases throughput. Optimal size dependant on average file size.&lt;br /&gt;nicl . -append /mounts/datastore:\\/communal opts "rsize=32768"&lt;br /&gt;nicl . -append /mounts/datastore:\\/communal opts "wsize=32768"&lt;br /&gt;&lt;br /&gt;# Check that the mount has been correctly added&lt;br /&gt;nicl . -list /mounts&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Add an entry for datastore into /etc/hosts if necessary and then restart the automount daemon.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;kill -HUP `cat /var/run/automount.pid`&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We can now find the mount under Network-&gt;communal&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-7196355479993837288?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/7196355479993837288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=7196355479993837288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/7196355479993837288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/7196355479993837288'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/10/creating-os-x-nfs-client-mounts-quiet.html' title='Creating OS X NFS client mounts (Quiet NAS part 4)'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-167027800362628813</id><published>2009-10-14T12:02:00.001-07:00</published><updated>2009-10-22T01:16:05.104-07:00</updated><title type='text'>Building a customised quiet NAS using Ubuntu server 9.04: Part 3 (NFS software and backup scripts)</title><content type='html'>We require a static IP address for our NAS. Edit /etc/network/interfaces and modify the eth0 lines:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# The primary network interface&lt;br /&gt;auto eth0&lt;br /&gt;iface eth0 inet static&lt;br /&gt;address 192.168.1.77&lt;br /&gt;netmask 255.255.255.0&lt;br /&gt;gateway 192.168.1.254&lt;br /&gt;&lt;br /&gt;ifdown eth0; ifup eth0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Install some software:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo apt-get install postfix nfs-kernel-server apache2 unzip zip make usbmount&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Edit /etc/exports:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# /etc/exports: the access control list for filesystems which may be exported&lt;br /&gt;#        to NFS clients.  See exports(5).&lt;br /&gt;#&lt;br /&gt;# Example for NFSv2 and NFSv3:&lt;br /&gt;# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)&lt;br /&gt;#&lt;br /&gt;# Example for NFSv4:&lt;br /&gt;# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)&lt;br /&gt;# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)&lt;br /&gt;#&lt;br /&gt;# insecure added to allow pre-Leopard OS X clients to mount share.&lt;br /&gt;/communal  *(rw,sync,no_subtree_check,no_root_squash,insecure)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo /etc/init.d/nfs-kernel-server restart&lt;br /&gt;&lt;br /&gt;$ showmount -e localhost&lt;br /&gt;&lt;br /&gt;Export list for datastore:&lt;br /&gt;/communal     *&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next consider the backups, running from a cron job. Remember that the requirement was for a job which would detect if a USB disk was mounted and if so, kick off a backup. This cron job would check for the existence of a USB disk every 15 minutes. We need some inbuilt controls - if the job takes longer than 15 minutes, a problem occurs as concurrent backups will kick off.  This requires a locking mechanism.&lt;br /&gt;&lt;br /&gt;Firstly we need a USB mounting mechanism:&lt;br /&gt;&lt;br /&gt;Edit /etc/usbmount/usbmount.cfg to allow us to mount hfsplus filesystems:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#############################################################################&lt;br /&gt;FILESYSTEMS="ext2 ext3 ufs hfs hfsplus"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo crontab -e&lt;br /&gt;&lt;br /&gt;0,15,30,45 * * * * /usr/local/scripts/backup.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;backup.sh looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;# Name: backups.sh&lt;br /&gt;# Author: tim.gibbon@lunarlite.co.uk&lt;br /&gt;# Version: 0.1&lt;br /&gt;# Description: Backup utility for xyz&lt;br /&gt;&lt;br /&gt;############SETUP SOME LOGFILES#############################&lt;br /&gt;DAY_OF_YEAR=`date +%j`&lt;br /&gt;LOGFILE_DATA="/home/tng/BACKUP/backuplog_${DAY_OF_YEAR}.txt"&lt;br /&gt;LOCKFILE="/tmp/backup.pid"&lt;br /&gt;BACKUPDEVICE=`mount | grep usb | awk '{print $3}'`&lt;br /&gt;BACKUPDEVICEFOUND=`mount | grep usb `&lt;br /&gt;BACKUPDEVICE_EXIT_STATUS=$?&lt;br /&gt;MAILTO="tim.gibbon@lunarlite.co.uk"&lt;br /&gt;############SETUP SOME LOGFILES#############################&lt;br /&gt;&lt;br /&gt;# Sanity check our lockfiles&lt;br /&gt;/usr/local/scripts/check_old_backup_dead.sh&lt;br /&gt;&lt;br /&gt;#If already running then stop&lt;br /&gt;if [ -e ${LOCKFILE} ]&lt;br /&gt;then&lt;br /&gt;echo "Already running. Exiting" &gt;&gt;${LOGFILE_DATA}&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Create backup directory mount points if they dont exist&lt;br /&gt;if [ ${BACKUPDEVICE_EXIT_STATUS} -ne 0 ]&lt;br /&gt;then&lt;br /&gt;echo "No backup device exists" &gt;&gt;${LOGFILE_DATA}&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# We have a backup device and no lockfile. Time to start backing up.&lt;br /&gt;echo $$ &gt;${LOCKFILE}&lt;br /&gt;&gt;${LOGFILE_DATA}&lt;br /&gt;echo "Backup device exit status is ${BACKUPDEVICE_EXIT_STATUS}" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;#echo "Found disk" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;echo "Backing up to ${BACKUPDEVICE}" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;STARTTODAY=`date`&lt;br /&gt;echo "####################################################" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;echo "BACKUP STARTED $STARTTODAY" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;echo "####################################################" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;echo "Disk capacity before backup" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;df -h ${BACKUPDEVICE}  &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#####Do the actual work. -x = Don't cross filesystem boundaries&lt;br /&gt;/usr/bin/rsync -a -l -x / ${BACKUPDEVICE}/ &gt;&gt;${LOGFILE_DATA}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDTODAY=`date`&lt;br /&gt;echo "####################################################" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;echo "BACKUP FINISHED $ENDTODAY" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;echo "####################################################" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;echo "Disk capacity after backup" &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;df -h ${BACKUPDEVICE}  &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;&lt;br /&gt;#Backup finished here, lets cleanup&lt;br /&gt;umount ${BACKUPDEVICE}&lt;br /&gt;&lt;br /&gt;#Make sure can read the logfiles&lt;br /&gt;chown tng:tng ${LOGFILE_DATA}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Remove the lockfile&lt;br /&gt;rm -f ${LOCKFILE}&lt;br /&gt;&lt;br /&gt;#Send mail to inform everyone backup complete and USB disks needs removing&lt;br /&gt;echo "." &gt;&gt; ${LOGFILE_DATA}&lt;br /&gt;mailx -s "Backup complete" ${MAILTO} &lt;${LOGFILE_DATA}   # exit exit 0 &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Check old backup dead script looks like the following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ cat /usr/local/scripts/check_old_backup_dead.sh&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;LOCKFILE="/tmp/backup.pid"&lt;br /&gt;LOG="/home/tng/BACKUP/remove_lockfile.txt"&lt;br /&gt;&lt;br /&gt;if [ ! -e ${LOCKFILE} ]&lt;br /&gt;then&lt;br /&gt;echo "NO LOCKFILE EXISTS - exiting" &gt;${LOG}&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;BACKUP_PID=`cat ${LOCKFILE}`&lt;br /&gt;&lt;br /&gt;echo "Looking for ${BACKUP_PID}" &gt;${LOG}&lt;br /&gt;&lt;br /&gt;ps -ef | grep ${BACKUP_PID} | grep -v grep&lt;br /&gt;&lt;br /&gt;FOUND_BACKUP_PID=$?&lt;br /&gt;&lt;br /&gt;if [ ${FOUND_BACKUP_PID} -eq 0 ]&lt;br /&gt;then&lt;br /&gt;echo "Found PID ${BACKUP_PID} running" &gt;&gt;${LOG}&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "We found a lockfile, but no backup running" &gt;&gt;${LOG}&lt;br /&gt;echo "We are removing the lockfile" &gt;&gt;${LOG}&lt;br /&gt;rm -f ${LOCKFILE}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Configure postfix &lt;a href="http://ubuntu-tutorials.com/2008/11/11/relaying-postfix-smtp-via-smtpgmailcom/"&gt;quickly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I then installed &lt;a href="http://www.reversemidastouch.com/gnuplorer/gnuplorer.tar.bz2"&gt;gnuplorer&lt;/a&gt; to keep a copy of the essential files and track changes made to the server since installation. This was modified slightly [gnuplorer.cfg] to pickup the backup logs (/home/tng/BACKUP/). A monthly cron job was added to run gnuplorer and rsync the job output for reference purposes.&lt;br /&gt;&lt;br /&gt;We now have a self-contained resilient NAS that will run a backup to external media which can then be mounted under OS X. The final steps are to allow the OS X clients to mount the NFS mounts. Some tweaks are advisable  - increasing the rsize and wsize mount options. These will be detailed in the next blog entry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-167027800362628813?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/167027800362628813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=167027800362628813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/167027800362628813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/167027800362628813'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/10/building-customised-quiet-nas-using_14.html' title='Building a customised quiet NAS using Ubuntu server 9.04: Part 3 (NFS software and backup scripts)'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-3051243788041992762</id><published>2009-10-13T12:52:00.000-07:00</published><updated>2009-10-13T13:21:29.971-07:00</updated><title type='text'>Building a customised quiet NAS using Ubuntu server 9.04: Part II (physical build and OS install)</title><content type='html'>Physical build&lt;br /&gt;&lt;br /&gt;Foxconn R10-S3 rear view - note the spare PCI slot (e.g Gigabit ethernet card).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EjK7a75bRts/StTbbHXrl3I/AAAAAAAAACY/zS_cDA_MMno/s1600-h/IMG_6496_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_EjK7a75bRts/StTbbHXrl3I/AAAAAAAAACY/zS_cDA_MMno/s320/IMG_6496_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392175912750651250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Remove the screw at the rear, located in the centre. The lid then slides off backwards.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EjK7a75bRts/StTbbRiBjuI/AAAAAAAAACg/dHWaerjuUYQ/s1600-h/IMG_6497_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_EjK7a75bRts/StTbbRiBjuI/AAAAAAAAACg/dHWaerjuUYQ/s320/IMG_6497_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392175915478388450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is now obvious how the front bezel is mounted. Remove the panel with the four clips carefully.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EjK7a75bRts/StTbbnxU8qI/AAAAAAAAACo/7-Lk-pLXB1U/s1600-h/IMG_6499_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_EjK7a75bRts/StTbbnxU8qI/AAAAAAAAACo/7-Lk-pLXB1U/s320/IMG_6499_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392175921448153762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Inside front view of the unit.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EjK7a75bRts/StTbb9hqn6I/AAAAAAAAACw/lsMBAgSII8o/s1600-h/IMG_6502_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_EjK7a75bRts/StTbb9hqn6I/AAAAAAAAACw/lsMBAgSII8o/s320/IMG_6502_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392175927288045474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Undo the screws located on the Left and Right behind the removed front bezel.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EjK7a75bRts/StTb_0GkRUI/AAAAAAAAADA/pauenshuM8A/s1600-h/IMG_6507_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_EjK7a75bRts/StTb_0GkRUI/AAAAAAAAADA/pauenshuM8A/s320/IMG_6507_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392176543233754434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EjK7a75bRts/StTbcbM3pKI/AAAAAAAAAC4/unh7oZwZWWw/s1600-h/IMG_6505_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_EjK7a75bRts/StTbcbM3pKI/AAAAAAAAAC4/unh7oZwZWWw/s320/IMG_6505_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392175935253882018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The optical and floppy drive housing can now be removed in it's entirety.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EjK7a75bRts/StTcAVD4bjI/AAAAAAAAADI/AGdgBUvjfkk/s1600-h/IMG_6511_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_EjK7a75bRts/StTcAVD4bjI/AAAAAAAAADI/AGdgBUvjfkk/s320/IMG_6511_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392176552080862770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EjK7a75bRts/StTcApOdKNI/AAAAAAAAADQ/X_GYym0-wqk/s1600-h/IMG_6512_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_EjK7a75bRts/StTcApOdKNI/AAAAAAAAADQ/X_GYym0-wqk/s320/IMG_6512_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392176557493922002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Insert the 2GB memory DIMM. A static strap must be used. Note from the pictures below that I forgot, but it would have made life much easier had I not.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EjK7a75bRts/StTcBCrHNbI/AAAAAAAAADY/7HLTZ8B6HRQ/s1600-h/IMG_6514_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_EjK7a75bRts/StTcBCrHNbI/AAAAAAAAADY/7HLTZ8B6HRQ/s320/IMG_6514_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392176564325004722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Insert the first hard drive upside down, screw in and plug in power and the SATA connector.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EjK7a75bRts/StTcBbgn5DI/AAAAAAAAADg/80R-FjLt1fo/s1600-h/IMG_6526_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_EjK7a75bRts/StTcBbgn5DI/AAAAAAAAADg/80R-FjLt1fo/s320/IMG_6526_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392176570991895602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The second drive needs to be mounted inside a 5.25" bay. An adaptor kit is required. Maplin or ebay have these available.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EjK7a75bRts/StTcfmWvOkI/AAAAAAAAADo/LtwpKCvQyh0/s1600-h/IMG_6530_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_EjK7a75bRts/StTcfmWvOkI/AAAAAAAAADo/LtwpKCvQyh0/s320/IMG_6530_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392177089299298882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EjK7a75bRts/StTcgkjRaFI/AAAAAAAAAD4/lPu21cDHqVY/s1600-h/IMG_6533_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_EjK7a75bRts/StTcgkjRaFI/AAAAAAAAAD4/lPu21cDHqVY/s320/IMG_6533_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392177105994868818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Plug in the SATA and power connectors. Replace all the screws, covers and front bezel. Power on the unit after connecting a Keyboard, Monitor and Mouse.&lt;br /&gt;&lt;br /&gt;Software configuration.&lt;br /&gt;&lt;br /&gt;Check that the disks are available to the BIOS.&lt;br /&gt;&lt;br /&gt;Allow the system to boot from USB drives, booting Ubuntu 9.04. Use Manual partitioning. My RAID configuration is detailed in the next two pictures - a 1GB /boot slice, 4 GB swap space and the remainder for the root filesystem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EjK7a75bRts/StTcgwkzzvI/AAAAAAAAAEA/4wqyt90NGTM/s1600-h/IMG_6543_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_EjK7a75bRts/StTcgwkzzvI/AAAAAAAAAEA/4wqyt90NGTM/s320/IMG_6543_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392177109222543090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EjK7a75bRts/StTchTcVrZI/AAAAAAAAAEI/7lCGezgxCQI/s1600-h/IMG_6544_med.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_EjK7a75bRts/StTchTcVrZI/AAAAAAAAAEI/7lCGezgxCQI/s320/IMG_6544_med.jpg" alt="" id="BLOGGER_PHOTO_ID_5392177118582254994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;During the install, only the packages for openssh-server were selected. Postfix, Apache and NFS will be added later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-3051243788041992762?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/3051243788041992762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=3051243788041992762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3051243788041992762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3051243788041992762'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/10/building-customised-quiet-nas-using_13.html' title='Building a customised quiet NAS using Ubuntu server 9.04: Part II (physical build and OS install)'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EjK7a75bRts/StTbbHXrl3I/AAAAAAAAACY/zS_cDA_MMno/s72-c/IMG_6496_med.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-3737778724054650332</id><published>2009-10-11T01:11:00.000-07:00</published><updated>2009-10-11T01:41:51.399-07:00</updated><title type='text'>Building a customised quiet NAS using Ubuntu server 9.04: Part 1 (background)</title><content type='html'>Two years ago, we provided a simple NAS device to a customer based around the  &lt;a href="http://www.nslu2-linux.org/"&gt;NSLU2&lt;/a&gt;. This setup was originally designed to combat the problem of permissions on OS X and the fact that the applications appear to ignore the umask. Shell scripts do not ignore the umask, but applications can pick and choose their own permissions. The problem is compounded by the main application running under Mac classic.&lt;br /&gt;&lt;br /&gt; Sharing documents inside the office was somewhat problematical which is where I came in. The customer now uses this NAS as the central store for all their documents and a big sledgehammer of a cron job comes along every 15 minutes and updates all the permissions on every file. This works brilliantly (even though it runs contrary to the *nix philosophy).&lt;br /&gt;&lt;br /&gt;The customer also required off-site data replication, which meant that 3 disks were required. DISK 1 was the main system disk for the NSLU2. DISK 2 of the NSLU2 would be swapped out [DISK 2A], replaced with a second DISK 2 [DISK 2B] and DISK 2A stored offsite (and vice-versa). A nightly backup would rsync everything from DISK 1 to DISK 2?.&lt;br /&gt;&lt;br /&gt;The problem is that the NSLU2 and the USB disks associated with it are messy and the swapover was usually problematical due to mounting/umounting issues. It was never going to be very elegant.&lt;br /&gt;&lt;br /&gt;After the last outage [caused by a swapover of DISK 2 into DISK 1], I persuaded the MD to upgrade the server to something custom built and perfectly suited to their needs. This would be contained NAS in a box, RAID 1 (mirrored) disks and mount HFS formatted USB disks so that the backups could be mounted in OS X. It would be a one button switch on/off operation. It would run Ubuntu server 9.04 (I don't want to wait for the next LTS release and 8.04 is just so 2008).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Shopping list:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;Foxconn R10-S3 Intel Atom 330 (Dual core with HT, appears as 4 CPUs to Linux) from &lt;a href="http://www.microdirect.co.uk/Home/Product/41537/alt"&gt;Micro Direct&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;2GB Memory DIMM from &lt;a href="http://www.crucial.com/uk"&gt;Crucial.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2 x HGST 1TB SATA Saturn hard drives from &lt;a href="http://www.dabs.com/products/hitachi-saturn-1tb-7200rpm-s300-16mb-5CXL.html?refs=50480000-50372&amp;amp;q=Internal%20Hard%20Drives"&gt;Dabs&lt;/a&gt;. I was unable to buy the hard drives from Microdirect as their javascript shopping basket (UPDATE quantity appears to be fubar'd). Sigh.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;I propose to re-use the Hard drives bought for the NSLU2 and reformat them as hfsplus filesystems once the data has been migrated across to the new NAS.&lt;br /&gt;&lt;br /&gt;Next issue - building the server, installing the OS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-3737778724054650332?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/3737778724054650332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=3737778724054650332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3737778724054650332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3737778724054650332'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/10/building-customised-quiet-nas-using.html' title='Building a customised quiet NAS using Ubuntu server 9.04: Part 1 (background)'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8353204564731519548</id><published>2009-09-23T05:50:00.000-07:00</published><updated>2009-09-23T06:04:17.530-07:00</updated><title type='text'>Sound levels within oggs</title><content type='html'>I've recently been playing with tuxpaint, gcompris and childsplay. American english kids learn the Sesame Steet alphabet (ayy, bee, cee, dee etc.) UK english kids learn phonics (aa, bur, cur, dur, eff, fur etc). So, I've been translating the sounds in Childsplay and Gcompris.&lt;br /&gt;&lt;br /&gt;There is a fantastic tool call normalize-ogg, part of the normalize-audio package.&lt;br /&gt;&lt;br /&gt;In a pre-recorded set of oggs, just run&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ normalize-ogg *&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Gcompris stores it's alphabet here:&lt;br /&gt;/usr/share/gcompris/boards/voices/en/alphabet&lt;br /&gt;&lt;br /&gt;and uses Unicode: a=&gt; U0061.ogg; b=&gt; U0062.ogg etc.&lt;br /&gt;&lt;br /&gt;Childsplay stores it's alphabet here:&lt;br /&gt;&lt;br /&gt;/usr/share/childsplay/Data/AlphabetSounds/en&lt;br /&gt;&lt;br /&gt;My alphabet sounds can be found here:&lt;br /&gt;&lt;a href="http://www.reversemidastouch.com/code/letters.zip"&gt;http://www.reversemidastouch.com/code/letters.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8353204564731519548?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8353204564731519548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8353204564731519548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8353204564731519548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8353204564731519548'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/09/sound-levels-within-oggs.html' title='Sound levels within oggs'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8068815887051071250</id><published>2009-08-24T11:39:00.000-07:00</published><updated>2009-08-24T11:44:43.064-07:00</updated><title type='text'>Facebook port scans</title><content type='html'>Looking through my router logs:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;20:23:52  23 Aug                 IDS scan parser : tcp port scan: 69.63.176.190 scanned at least 10 ports at x.y.z.a. (1 of 1) : 69.63.176.190 x.y.z.a 0040 TCP 80-&gt;64876 [..AR..] seq 105673427 ack 753172620 win 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;tng@withnail:~$ host 69.63.176.190&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;190.176.63.69.in-addr.arpa domain name pointer channel30.01.05.sf2p.facebook.com.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A rogue app "tag photos" that one of my friends had installed might well have been the culprit. I got a mail saying I was tagged and of course refused the app install. The app was later reporting that it had been banned by facebook admins. Still, someone @facebook.com ran a port scan on my system.&lt;br /&gt;&lt;br /&gt;Be careful out there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8068815887051071250?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8068815887051071250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8068815887051071250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8068815887051071250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8068815887051071250'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/08/facebook-port-scans.html' title='Facebook port scans'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-4315660097057346687</id><published>2009-07-29T12:03:00.000-07:00</published><updated>2009-07-29T12:15:48.900-07:00</updated><title type='text'>Apple hfs+ filesystem recovery (or lack of)</title><content type='html'>Attach a removed disk via a USB-&gt;SATA convertor to an Apple. Nothing shows up on the Desktop, so we need to find out what it is doing:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ibook-g4:/var/log root# ps -auxwww | grep fsck&lt;br /&gt;root       161   2.1  0.2    32176   3528  ??  R     4:41PM   0:01.36 /System/Library/Filesystems/hfs.fs/Contents/Resources/../../../../../../sbin/fsck_hfs -y /dev/disk1s2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Disk and slice is identified as /dev/disk1s2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After the fsck_hfs finishes, a quick check of /var/log/system.log :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Jul 29 16:46:55 ibook-g4 diskarbitrationd[39]: unable to repair /dev/disk1s2 (status code 0x00000008).&lt;br /&gt;Jul 29 16:46:55 ibook-g4 diskarbitrationd[39]: disk1s2    hfs      154DC182-5D68-3AA3-A9FD-6E4BE476EDA1 Macintosh HD            [not mounted]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Disk manager shows that &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EjK7a75bRts/SnCd6NQKq_I/AAAAAAAAACA/s9fQm71lFU4/s1600-h/disk_id_from_disk_manager.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 318px;" src="http://1.bp.blogspot.com/_EjK7a75bRts/SnCd6NQKq_I/AAAAAAAAACA/s9fQm71lFU4/s320/disk_id_from_disk_manager.jpg" alt="" id="BLOGGER_PHOTO_ID_5363960779513703410" border="0" /&gt;&lt;/a&gt;the disk can be correctly identified, but that it needs repairing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Verify disk gives us the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EjK7a75bRts/SnCec4dIdcI/AAAAAAAAACI/wYGYCTUyOMA/s1600-h/invalid_key_length.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 277px;" src="http://2.bp.blogspot.com/_EjK7a75bRts/SnCec4dIdcI/AAAAAAAAACI/wYGYCTUyOMA/s320/invalid_key_length.jpg" alt="" id="BLOGGER_PHOTO_ID_5363961375226361282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Invalid Node Structure&lt;br /&gt;Rebuilding Catalog B-tree.&lt;br /&gt;Invalid key length&lt;br /&gt;The volume Macintosh HD could not be repaired.&lt;br /&gt;&lt;br /&gt;Error: The underlying task reported failure on exit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ibook-g4:/var/log root# fsck -y /dev/disk1s2&lt;br /&gt;** /dev/rdisk1s2&lt;br /&gt;BAD SUPER BLOCK: MAGIC NUMBER WRONG&lt;br /&gt;&lt;br /&gt;LOOK FOR ALTERNATE SUPERBLOCKS? yes&lt;br /&gt;&lt;br /&gt;SEARCH FOR ALTERNATE SUPER-BLOCK FAILED. YOU MUST USE THE&lt;br /&gt;-b OPTION TO FSCK TO SPECIFY THE LOCATION OF AN ALTERNATE&lt;br /&gt;SUPER-BLOCK TO SUPPLY NEEDED INFORMATION; SEE fsck(8).&lt;br /&gt;&lt;br /&gt;ibook-g4:/var/log root# fsck -b32 -y /dev/disk1s2&lt;br /&gt;Alternate super block location: 32&lt;br /&gt;** /dev/rdisk1s2&lt;br /&gt;BAD SUPER BLOCK: MAGIC NUMBER WRONG&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Oh - all the superblocks have gone bad. This is not good news.&lt;br /&gt;&lt;br /&gt;Looking at the disk using the same USB-&gt;SATA convertor on an Ubuntu box:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tail -40 /var/log/syslog&lt;br /&gt;&lt;br /&gt;Jul 29 19:33:46 marwood kernel: [81890.988175] usb 1-3: new high speed USB device using ehci_hcd and address 11&lt;br /&gt;Jul 29 19:33:46 marwood kernel: [81891.127530] usb 1-3: configuration #1 chosen from 1 choice&lt;br /&gt;Jul 29 19:33:46 marwood kernel: [81891.128938] scsi23 : SCSI emulation for USB Mass Storage devices&lt;br /&gt;Jul 29 19:33:46 marwood kernel: [81891.129314] usb-storage: device found at 11&lt;br /&gt;Jul 29 19:33:46 marwood kernel: [81891.129320] usb-storage: waiting for device to settle before scanning&lt;br /&gt;Jul 29 19:33:49 marwood chipcardd[3651]: devicemanager.c: 3373: Changes in hardware list&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.128548] usb-storage: device scan complete&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.129669] scsi 23:0:0:0: Direct-Access     WDC WD32 00AAJS-40RYA0    1B03 PQ: 0 ANSI: 2 CCS&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.134243] sd 23:0:0:0: [sdc] 625142448 512-byte hardware sectors: (320 GB/298 GiB)&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.135014] sd 23:0:0:0: [sdc] Write Protect is off&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.135021] sd 23:0:0:0: [sdc] Mode Sense: 00 38 00 00&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.135027] sd 23:0:0:0: [sdc] Assuming drive cache: write through&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.135763] sd 23:0:0:0: [sdc] 625142448 512-byte hardware sectors: (320 GB/298 GiB)&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.138147] sd 23:0:0:0: [sdc] Write Protect is off&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.138154] sd 23:0:0:0: [sdc] Mode Sense: 00 38 00 00&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.138159] sd 23:0:0:0: [sdc] Assuming drive cache: write through&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.138168]  sdc: sdc1 sdc2&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.205175] sd 23:0:0:0: [sdc] Attached SCSI disk&lt;br /&gt;Jul 29 19:33:51 marwood kernel: [81896.205342] sd 23:0:0:0: Attached scsi generic sg3 type 0&lt;br /&gt;Jul 29 19:33:52 marwood kernel: [81897.007131] hfs: Filesystem was not cleanly unmounted, running fsck.hfsplus is recommended.  mounting read-only.&lt;br /&gt;Jul 29 19:33:52 marwood hald: mounted /dev/sdc2 on behalf of uid 1000&lt;br /&gt;&lt;br /&gt;tng@marwood:/var/log$ df | tail -1&lt;br /&gt;/dev/sdc2            312235312 154942252 157293060  50% /media/disk-1&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The filesystem is mounted, but unclean. try running fsck.hfsplus (installed from an apt-get install hfstools):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;root@marwood:~# fsck.hfsplus /dev/sdc2&lt;br /&gt;** /dev/sdc2&lt;br /&gt;** Checking HFS Plus volume.&lt;br /&gt;** Checking Extents Overflow file.&lt;br /&gt;** Checking Catalog file.&lt;br /&gt;  Invalid node structure&lt;br /&gt;(4, 15585)&lt;br /&gt;** Volume check failed.&lt;br /&gt;&lt;br /&gt;root@marwood:~# ls -l /sbin/*hfs*&lt;br /&gt;lrwxrwxrwx 1 root root     12 2009-07-29 08:44 /sbin/fsck.hfs -&gt; fsck.hfsplus&lt;br /&gt;-rwxr-xr-x 1 root root 172604 2008-11-06 06:01 /sbin/fsck.hfsplus&lt;br /&gt;lrwxrwxrwx 1 root root     12 2009-07-29 08:44 /sbin/mkfs.hfs -&gt; mkfs.hfsplus&lt;br /&gt;-rwxr-xr-x 1 root root  36528 2008-11-06 06:01 /sbin/mkfs.hfsplus&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Looks like I'm stuck.:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;root@marwood:~# fsck.hfsplus -d /dev/sdc2&lt;br /&gt;** /dev/sdc2&lt;br /&gt;** Checking HFS Plus volume.&lt;br /&gt;** Checking Extents Overflow file.&lt;br /&gt;** Checking Catalog file.&lt;br /&gt;  Invalid node structure&lt;br /&gt;(4, 15585)&lt;br /&gt;** Rebuilding Catalog B-tree.&lt;br /&gt;hfs_UNswap_BTNode: invalid node height (1)&lt;br /&gt;hfs_swap_BTNode: record #36 invalid offset (0x000D)&lt;br /&gt;  Invalid node structure&lt;br /&gt;(4, 15584)&lt;br /&gt;hfs_swap_BTNode: offsets 28 and 29 out of order (0x0000, 0x0000)&lt;br /&gt;  Invalid node structure&lt;br /&gt;(4, 15668)&lt;br /&gt;hfs_swap_BTNode: record #-1 invalid offset (0xFFFF)&lt;br /&gt;  Invalid node structure&lt;br /&gt;(4, 15675)&lt;br /&gt;hfs_swap_BTNode: invalid forward link (0xFFFFFFFF)&lt;br /&gt;hfs_swap_BTNode: invalid backward link (0x7FFFFFFF)&lt;br /&gt;hfs_swap_BTNode: invalid node kind (-3)&lt;br /&gt;hfs_swap_BTNode: invalid node height (255)&lt;br /&gt;hfs_swap_BTNode: invalid record count (0xEFFF)&lt;br /&gt;  Invalid record count&lt;br /&gt;(4, 15676)&lt;br /&gt;hfs_swap_BTNode: invalid forward link (0xFFFFFFFF)&lt;br /&gt;hfs_swap_BTNode: invalid backward link (0xFFFFFFFF)&lt;br /&gt;hfs_swap_BTNode: invalid node height (255)&lt;br /&gt;hfs_swap_BTNode: invalid record count (0xFFFF)&lt;br /&gt;  Invalid record count&lt;br /&gt;(4, 15677)&lt;br /&gt;hfs_swap_BTNode: invalid forward link (0xFFFFFFC0)&lt;br /&gt;hfs_swap_BTNode: invalid backward link (0x007FFFFF)&lt;br /&gt;hfs_swap_BTNode: invalid node kind (-2)&lt;br /&gt;hfs_swap_BTNode: invalid node height (255)&lt;br /&gt;hfs_swap_BTNode: invalid record count (0xFFFF)&lt;br /&gt;  Invalid record count&lt;br /&gt;(4, 15678)&lt;br /&gt;hfs_swap_HFSPlusBTInternalNode: catalog key #27 invalid length (0)&lt;br /&gt;  Invalid key length&lt;br /&gt;(4, 15752)&lt;br /&gt;** The volume Macintosh HD could not be repaired.&lt;br /&gt;   volume type is pure HFS+&lt;br /&gt;   primary MDB is at block 0 0x00&lt;br /&gt;   alternate MDB is at block 0 0x00&lt;br /&gt;   primary VHB is at block 2 0x02&lt;br /&gt;   alternate VHB is at block 624470622 0x2538aa5e&lt;br /&gt;   sector size = 512 0x200&lt;br /&gt;   VolumeObject flags = 0x07&lt;br /&gt;   total sectors for volume = 624470624 0x2538aa60&lt;br /&gt;   total sectors for embedded volume = 0 0x00&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;However, it can still be mounted (and the data copied off). This is what I decided to do. The filesystem on the disk is toast.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;root@marwood:~# mount /dev/sdc2 /mnt&lt;br /&gt;root@marwood:~# df -h |tail -1&lt;br /&gt;/dev/sdc2             298G  148G  151G  50% /mnt&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-4315660097057346687?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/4315660097057346687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=4315660097057346687' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4315660097057346687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4315660097057346687'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/07/apple-hfs-filesystem-recovery-or-lack.html' title='Apple hfs+ filesystem recovery (or lack of)'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EjK7a75bRts/SnCd6NQKq_I/AAAAAAAAACA/s9fQm71lFU4/s72-c/disk_id_from_disk_manager.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-1455616938966154013</id><published>2009-02-20T15:49:00.000-08:00</published><updated>2009-02-21T03:30:00.676-08:00</updated><title type='text'>Maplin Precision Gold N56FU</title><content type='html'>&lt;p&gt;We've just started playing with Microcontrollers, so decided it was time to invest in a better voltmeter than the ageing analogue one in the garage.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We wanted something that might work with GNU/Linux and it had to be from Maplin to cut down on postage costs. We settled on this one - a &lt;a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=222041"&gt;Maplin Precision Gold N56FU&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Anyway, it plays nicely with GNU/Linux and the excellent qtdmm. Fantastic reverse engineering site &lt;a href="http://www.futuretimes.org.uk/USB_multimeter.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Download the qtdmm.ini file &lt;a href="http://www.lunarlite.co.uk/code/qtdmm.ini"&gt;here&lt;/a&gt; - the only thing required to make this work is a quick:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo chmod a+r /dev/ttyUSB0&lt;br /&gt;$ qtdmm &amp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Load the qtdmm.ini and it all should work.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-1455616938966154013?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/1455616938966154013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=1455616938966154013' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1455616938966154013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1455616938966154013'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2009/02/maplin-precision-gold-n56fu.html' title='Maplin Precision Gold N56FU'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-9112322840280489965</id><published>2008-12-12T13:06:00.001-08:00</published><updated>2008-12-12T14:20:58.140-08:00</updated><title type='text'>Intrepid Ibex, Vostro 1700 with nvidia 8600GT</title><content type='html'>&lt;p&gt;If you want to run things in modes smaller than 1920x1200, here is one way to do it.&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;Change the window manager to metacity as compiz tends to think it knows better about windowing than you do. It flicks between full screen and windowed mode in  OpenGL apps.&lt;/p&gt; &lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EjK7a75bRts/SULSu8VXkJI/AAAAAAAAABQ/pDJbcvaCWjE/s1600-h/Screenshot-Configuration+Editor+-+window_manager.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 261px;" src="http://3.bp.blogspot.com/_EjK7a75bRts/SULSu8VXkJI/AAAAAAAAABQ/pDJbcvaCWjE/s320/Screenshot-Configuration+Editor+-+window_manager.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5279013417143210130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;One working xorg.conf&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# This file was generated by dexconf, the Debian X Configuration tool, using&lt;br /&gt;# values from the debconf database.&lt;br /&gt;#&lt;br /&gt;# Edit this file with caution, and see the xorg.conf manual page.&lt;br /&gt;# (Type "man xorg.conf" at the shell prompt.)&lt;br /&gt;#&lt;br /&gt;# This file is automatically updated on xserver-xorg package upgrades *only*&lt;br /&gt;# if it has not been modified since the last upgrade of the xserver-xorg&lt;br /&gt;# package.&lt;br /&gt;#&lt;br /&gt;# If you have edited this file but would like it to be automatically updated&lt;br /&gt;# again, run the following command:&lt;br /&gt;#   sudo dpkg-reconfigure -phigh xserver-xorg&lt;br /&gt;# commented out by update-manager, HAL is now used&lt;br /&gt;#Section "InputDevice"&lt;br /&gt;# Identifier "Generic Keyboard"&lt;br /&gt;# Driver  "kbd"&lt;br /&gt;# Option  "XkbRules" "xorg"&lt;br /&gt;# Option  "XkbModel" "pc105"&lt;br /&gt;# Option  "XkbLayout" "gb"&lt;br /&gt;# Option  "XkbVariant" "gb"&lt;br /&gt;#EndSection&lt;br /&gt;# commented out by update-manager, HAL is now used&lt;br /&gt;#Section "InputDevice"&lt;br /&gt;# Identifier "Configured Mouse"&lt;br /&gt;# Driver  "mouse"&lt;br /&gt;# Option  "CorePointer"&lt;br /&gt;#EndSection&lt;br /&gt;# commented out by update-manager, HAL is now used&lt;br /&gt;#Section "InputDevice"&lt;br /&gt;# Identifier "Synaptics Touchpad"&lt;br /&gt;# Driver  "synaptics"&lt;br /&gt;# Option  "SendCoreEvents" "true"&lt;br /&gt;# Option  "Device"  "/dev/psaux"&lt;br /&gt;# Option  "Protocol"  "auto-dev"&lt;br /&gt;# Option  "HorizEdgeScroll" "0"&lt;br /&gt;#EndSection&lt;br /&gt;&lt;br /&gt;Section "ServerLayout"&lt;br /&gt;    Identifier     "Default Layout"&lt;br /&gt;    Screen      0  "Screen0" 0 0&lt;br /&gt;    InputDevice    "Keyboard0" "CoreKeyboard"&lt;br /&gt;    InputDevice    "Mouse0" "CorePointer"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Module"&lt;br /&gt;    Load           "glx"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "ServerFlags"&lt;br /&gt;    Option         "Xinerama" "0"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;&lt;br /&gt;    # generated from default&lt;br /&gt;    Identifier     "Keyboard0"&lt;br /&gt;    Driver         "keyboard"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;&lt;br /&gt;    # generated from default&lt;br /&gt;    Identifier     "Mouse0"&lt;br /&gt;    Driver         "mouse"&lt;br /&gt;    Option         "Protocol" "auto"&lt;br /&gt;    Option         "Device" "/dev/psaux"&lt;br /&gt;    Option         "Emulate3Buttons" "no"&lt;br /&gt;    Option         "ZAxisMapping" "4 5"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;    Identifier     "Configured Monitor"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;    Identifier     "Monitor0"&lt;br /&gt;    VendorName     "Unknown"&lt;br /&gt;    ModelName      "LPL"&lt;br /&gt;    HorizSync       30.0 - 110.0&lt;br /&gt;    VertRefresh     50.0 - 150.0&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;    Identifier     "Configured Video Device"&lt;br /&gt;    Driver         "nvidia"&lt;br /&gt;    Option         "NoLogo" "True"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;    Identifier     "Device0"&lt;br /&gt;    Driver         "nvidia"&lt;br /&gt;    VendorName     "NVIDIA Corporation"&lt;br /&gt;    BoardName      "GeForce 8600M GT"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Screen"&lt;br /&gt;&lt;br /&gt;    Identifier     "Default Screen"&lt;br /&gt;    Device         "Configured Video Device"&lt;br /&gt;    Monitor        "Configured Monitor"&lt;br /&gt;    DefaultDepth    24&lt;br /&gt;     &lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Screen"&lt;br /&gt;    Identifier     "Screen0"&lt;br /&gt;    Device         "Device0"&lt;br /&gt;    Monitor        "Monitor0"&lt;br /&gt;    DefaultDepth    24&lt;br /&gt;    Option         "TwinView" "0"&lt;br /&gt;    Option         "metamodes" "nvidia-auto-select +0+0"&lt;br /&gt;    Option         "UseEdidFreqs" "False"&lt;br /&gt;    Option         "ConstantDPI" "False"&lt;br /&gt;    SubSection     "Display"&lt;br /&gt;        Depth       24&lt;br /&gt;        Modes      "1920x1200" "1280x1024" "1024x768"&lt;br /&gt;    EndSubSection&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-9112322840280489965?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/9112322840280489965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=9112322840280489965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/9112322840280489965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/9112322840280489965'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2008/12/intrepid-ibex-vostro-1700-with-nvidia.html' title='Intrepid Ibex, Vostro 1700 with nvidia 8600GT'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EjK7a75bRts/SULSu8VXkJI/AAAAAAAAABQ/pDJbcvaCWjE/s72-c/Screenshot-Configuration+Editor+-+window_manager.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-5207079814253667656</id><published>2008-07-29T13:27:00.001-07:00</published><updated>2008-07-29T13:40:14.158-07:00</updated><title type='text'>The problem with Vista and No-fix, No-fee.</title><content type='html'>I had to walk away from my second call last week. The customer was attempting to get his MSN working on his Vista machine with a &lt;a href="http://www-uk.linksys.com/servlet/Satellite?c=L_CASupport_C2&amp;amp;childpagename=UK%2FLayout&amp;amp;cid=1175234040387&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper&amp;amp;lid=4038745678B337"&gt;Linksys WAG354G&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So far so good. Except MSN wouldn't work 81000306 - there may be a problem with your firewall. The diagnostics came up clean. I walked away at this point as google couldn't provide me with the right answer and I'd run out of time.&lt;br /&gt;&lt;br /&gt;I did some reading and visited again tonight armed with this command on a bit of paper:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;- Click start&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; - Type: cmd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; - Right-click cmd.exe when it appears under Applications&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; - Click Run As Administrator&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; - Type the following: netsh int tcp set global autotuninglevel=disabled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; - Press enter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; - Restart your computer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All is well with the world. I'm just flummoxed as to how Microsoft failed to spot that the autotuninglevel would play hell with MSN (albeit with certain models of router). Lets face it though, Linksys is a big company. One employee in Microsoft must have found and flagged this pre-Beta and they still shipped with autotuninglevel on. Sigh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-5207079814253667656?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/5207079814253667656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=5207079814253667656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5207079814253667656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5207079814253667656'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2008/07/problem-with-vista-and-no-fix-no-fee.html' title='The problem with Vista and No-fix, No-fee.'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-4565593677701164823</id><published>2008-07-24T05:03:00.000-07:00</published><updated>2008-07-24T05:19:13.295-07:00</updated><title type='text'>Windows XP moving from an IDE to an ATA disk</title><content type='html'>&lt;p&gt;I needed to move Windows XP from a 160GB PATA hard drive to a 164GB SATA hard drive because the PATA hard drive was reporting bad blocks. For this technique to work, it is essential to have the destination disk to have a capacity larger or equal to the source disk.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The customer no longer had the installation media (it was a legitimate Fujitsu-Seimens Windows XP Home copy complete with licence key on top of the case). I was worried that my OEM XP Home wouldn't work with the licence key on the top of the case.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I thought I'd try and use dd which is documented &lt;a href="http://www.justlinux.com/forum/showthread.php?threadid=149328"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I used &lt;a href="http://www.plop.at/en/ploplinux.html"&gt;ploplinux&lt;/a&gt; for no particular reason other than I had the ISO. Any Live CD will do provided it has dd (all flavours do).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Once booted, I checked that the disks were the right way round - that the IDE disk was /dev/hda and the SATA disk /dev/sda by checking the capacities&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# fdisk -l /dev/hda&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;and&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# fdisk -l /dev/sda&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next for the copying across:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# dd if=/dev/hda of=/dev/sda bs=32256&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This took about 2 hours. I then booted the Windows XP Home (SP2) recovery console&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;FIXBOOT&lt;br /&gt;FIXMBR&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The new hard disk booted perfectly first time. Time for my aging copy of Norton Ghost to be recycled.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-4565593677701164823?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/4565593677701164823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=4565593677701164823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4565593677701164823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4565593677701164823'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2008/07/windows-xp-moving-from-ide-to-ata-disk.html' title='Windows XP moving from an IDE to an ATA disk'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8146892696885154958</id><published>2008-07-08T12:32:00.000-07:00</published><updated>2008-07-08T12:36:41.146-07:00</updated><title type='text'>Windows XP migration with File and Settings Transfer</title><content type='html'>&lt;p&gt; Just used this tool for an XP to XP migration. Using a USB caddy I was able to transfer everything from a beige box to a shiny new Vostro 200.&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.aumha.org/win5/a/fast.php"/&gt;Everything you wanted to know about F.A.S.T but were afraid to ask&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Just to re-iterate from the above article, it is &lt;i&gt;_essential_&lt;/i&gt; to check that the version numbers are identical on source a destination box.  Go to C:\WINDOWS\system32\usmt\, right click on the file migwiz.exe, and select Properties.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8146892696885154958?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8146892696885154958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8146892696885154958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8146892696885154958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8146892696885154958'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2008/07/windows-xp-migration-with-file-and.html' title='Windows XP migration with File and Settings Transfer'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8235143141577322188</id><published>2008-05-31T11:19:00.000-07:00</published><updated>2008-05-31T11:21:22.994-07:00</updated><title type='text'>Using imagemagick to create animated gifs</title><content type='html'>&lt;p&gt;Given a sequence of jpgs, loop through them gently&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;animate -size x400 -loop 0 -pause 10 -delay 300 *.jpg&lt;br /&gt;&lt;br /&gt;Hit 1 to bring up the animate dialogue boxes. Be patient&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Save as gif&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8235143141577322188?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8235143141577322188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8235143141577322188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8235143141577322188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8235143141577322188'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2008/05/using-imagemagick-to-create-animated.html' title='Using imagemagick to create animated gifs'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-3197781314192415240</id><published>2008-05-30T04:47:00.000-07:00</published><updated>2008-05-30T04:48:15.958-07:00</updated><title type='text'>Backing up data to DVD</title><content type='html'>&lt;p&gt;Sometimes gnome-burner just doesn't play ball. Note to self&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;mkisofs -r -J -l -d -joliet-long -allow-multidot -V Tosh_HDD -o ./tosh_hdd.iso BRE_DISK_TOSH/*&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-3197781314192415240?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/3197781314192415240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=3197781314192415240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3197781314192415240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3197781314192415240'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2008/05/backing-up-data-to-dvd.html' title='Backing up data to DVD'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6613042343110119874</id><published>2008-05-30T02:26:00.000-07:00</published><updated>2008-06-10T00:31:41.476-07:00</updated><title type='text'>Oodle API, Perl and Postcode searches</title><content type='html'>&lt;p&gt;Thanks to Steve Baker on the &lt;a href="http://tech.groups.yahoo.com/group/oodleapi"&gt;Oodle API discussion group&lt;/a&gt;, I can now perform Oodle API searches &lt;a href="http://tech.groups.yahoo.com/group/oodleapi/message/318"&gt;against UK postcodes&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here is one way to do it&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#    Tim Gibbon 2008&lt;br /&gt;#    This program is free software: you can redistribute it and/or modify&lt;br /&gt;#    it under the terms of the GNU General Public License as published by&lt;br /&gt;#    the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;#    (at your option) any later version.&lt;br /&gt;#&lt;br /&gt;#    This program is distributed in the hope that it will be useful,&lt;br /&gt;#    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;#    GNU General Public License for more details.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use diagnostics;&lt;br /&gt;use Frontier::Client;&lt;br /&gt;use Data::Dumper;&lt;br /&gt;my $location="uk";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;##################################LOW/HIGH FILTER####################&lt;br /&gt;my $lowhigh={ low=&gt;'100000',&lt;br /&gt;              high=&gt;'300000' };&lt;br /&gt;my %prices= ('params'=&gt; $lowhigh);&lt;br /&gt;&lt;br /&gt;my $price_type = {'type'  =&gt;  'price',&lt;br /&gt;            %prices&lt;br /&gt;            };&lt;br /&gt;my @filters_price=( $price_type );&lt;br /&gt;##################################LOW/HIGH FILTER#######################&lt;br /&gt;######################BEDROOMS DIMENSION ISN'T GREAT - HASHED OUT BELOW#&lt;br /&gt;########################################################################&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;##################################DISTANCE FILTER####################&lt;br /&gt;# Postcode search DOES work for UK Postcodes&lt;br /&gt;my $distance_params= {&lt;br /&gt;        value        =&gt; 3,&lt;br /&gt;        units        =&gt; 'mi',&lt;br /&gt;        zip          =&gt; 'NG7 2RD',&lt;br /&gt;        country_code =&gt; 'GBR'&lt;br /&gt;    };&lt;br /&gt;my %distances=('params'=&gt;$distance_params);&lt;br /&gt;my $distance_type = {'type' =&gt; 'distance',&lt;br /&gt;                     %distances&lt;br /&gt;                     };&lt;br /&gt;my @filters_distance = ( $distance_type );&lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;##################################DISTANCE FILTER####################&lt;br /&gt;my @allfilters=(@filters_price, @filters_distance);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;my %calling_params;&lt;br /&gt;                                   $calling_params{'partner_id'}="YOURAPIKEY";&lt;br /&gt;                                   $calling_params{'q'}="toyota prius";&lt;br /&gt;                                   $calling_params{'category'}="vehicles";&lt;br /&gt;                                   $calling_params{'region'}="uk";&lt;br /&gt;                                   $calling_params{'from'}=0;&lt;br /&gt;                                   $calling_params{'to'}=10;&lt;br /&gt;#                                   $calling_params{'dimensions'}=\@dimensions;&lt;br /&gt;#                                   $calling_params{'filters'}=\@filters_price;&lt;br /&gt;                                   $calling_params{'filters'}=\@allfilters;&lt;br /&gt;&lt;br /&gt;$Data::Dumper::Purity=1;&lt;br /&gt;print Dumper(%calling_params);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#The following program shows how to call an XML-RPC server from Perl:&lt;br /&gt;&lt;br /&gt;# Make an object to represent the XML-RPC server.&lt;br /&gt;my $server_url = 'http://api.oodle.com/api/';&lt;br /&gt;my $server = Frontier::Client-&gt;new(url =&gt; $server_url&lt;br /&gt;                                        );&lt;br /&gt;&lt;br /&gt;# Call the remote server and get our result.&lt;br /&gt;my $result = $server-&gt;call('get', \%calling_params);&lt;br /&gt;my $sum = $result-&gt;{'total'};&lt;br /&gt;my $items = $result-&gt;{'items'};&lt;br /&gt;my $item_number=0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;my @rows;&lt;br /&gt;foreach my $record (@$items) {&lt;br /&gt;&lt;br /&gt;    my $item_row;&lt;br /&gt;&lt;br /&gt;        $item_number++;&lt;br /&gt;        print ("######ITEM NUMBER $item_number\n");&lt;br /&gt;        my $url=$record-&gt;{'url'} if $record-&gt;{'url'};&lt;br /&gt;        my $shortbody=$record-&gt;{'body'} if $record-&gt;{'body'};&lt;br /&gt;        my $longbody=$record-&gt;{'sbody'} if $record-&gt;{'sbody'};&lt;br /&gt;        my $price=$record-&gt;{'price'} if $record-&gt;{'price'};&lt;br /&gt;&lt;br /&gt;        print ("URL: $url DESC: $shortbody LONGDESC: $longbody \n PRICE $price\n\n");&lt;br /&gt;        print ("#"x80,"\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;print ("OK we found $sum records\n");&lt;br /&gt;&lt;br /&gt;###################USE FOR DEBUG################################&lt;br /&gt;#$Data::Dumper::Purity=1;&lt;br /&gt;##$Data::Dumper::Pad="####PAD####";&lt;br /&gt;#$Data::Dumper::Sortkeys="1";&lt;br /&gt;##$Data::Dumper::Varname="#VAR#";&lt;br /&gt;#print Dumper($items);&lt;br /&gt;###################USE FOR DEBUG################################&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6613042343110119874?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6613042343110119874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6613042343110119874' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6613042343110119874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6613042343110119874'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2008/05/oodle-api-perl-and-postcode-searches.html' title='Oodle API, Perl and Postcode searches'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-1849275991359464221</id><published>2008-02-21T11:21:00.000-08:00</published><updated>2008-06-04T01:17:17.597-07:00</updated><title type='text'>Oodle API with Perl and Frontier::Client</title><content type='html'>&lt;h1&gt;Perl client code for using Oodle API&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I've been disappointed that no-one has seemingly published a Perl implementation of the Oodle API. Here is one way to do it:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Requires Frontier::Client and Data::Dumper modules &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;#    Tim Gibbon 2008&lt;br /&gt;#    This program is free software: you can redistribute it and/or modify&lt;br /&gt;#    it under the terms of the GNU General Public License as published by&lt;br /&gt;#    the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;#    (at your option) any later version.&lt;br /&gt;#&lt;br /&gt;#    This program is distributed in the hope that it will be useful,&lt;br /&gt;#    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;#    GNU General Public License for more details.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use diagnostics;&lt;br /&gt;use Frontier::Client;&lt;br /&gt;use Data::Dumper;&lt;br /&gt;&lt;br /&gt;my $lowhigh={ low=&gt;'1000',&lt;br /&gt;              high=&gt;'22000' };&lt;br /&gt;my %prices= ('params'=&gt; $lowhigh);&lt;br /&gt;&lt;br /&gt;my $type = {'type'  =&gt;  'price',&lt;br /&gt;            %prices&lt;br /&gt;            };&lt;br /&gt;my @filters_price=( $type );&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;my %calling_params;&lt;br /&gt;                                   $calling_params{'partner_id'}="YOURAPIKEY";&lt;br /&gt;                                   $calling_params{'q'}="toyota prius";&lt;br /&gt;                                   $calling_params{'category'}="vehicles";&lt;br /&gt;                                   $calling_params{'region'}="london";&lt;br /&gt;                                   $calling_params{'filters'}=\@filters_price;&lt;br /&gt;&lt;br /&gt;#Useful for debugging input params&lt;br /&gt;#$Data::Dumper::Purity=1;&lt;br /&gt;#print Dumper(%calling_params);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#The following program shows how to call an XML-RPC server from Perl:&lt;br /&gt;&lt;br /&gt;# Make an object to represent the XML-RPC server.&lt;br /&gt;my $server_url = 'http://api.oodle.com/api/';&lt;br /&gt;my $server = Frontier::Client-&gt;new(url =&gt; $server_url&lt;br /&gt;                                        );&lt;br /&gt;&lt;br /&gt;# Call the remote server and get our result.&lt;br /&gt;my $result = $server-&gt;call('get', \%calling_params);&lt;br /&gt;my $sum = $result-&gt;{'total'};&lt;br /&gt;my $items = $result-&gt;{'items'};&lt;br /&gt;my $item_number=0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;foreach my $record (@$items) {&lt;br /&gt;        $item_number++;&lt;br /&gt;        print ("######ITEM NUMBER $item_number\n");&lt;br /&gt;        my $mpg=$record-&gt;{'milespergallon'} if $record-&gt;{'milespergallon'};&lt;br /&gt;        my $url=$record-&gt;{'url'} if $record-&gt;{'url'};&lt;br /&gt;        my $shortbody=$record-&gt;{'body'} if $record-&gt;{'body'};&lt;br /&gt;        my $longbody=$record-&gt;{'sbody'} if $record-&gt;{'sbody'};&lt;br /&gt;        my $price=$record-&gt;{'price'} if $record-&gt;{'price'};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        print ("PRICE \t $price \n") if $price;&lt;br /&gt;#       print ("URL \t $url \n") if $url;&lt;br /&gt;#       print ("SHORT \t $shortbody \n") if $shortbody;&lt;br /&gt;#       print ("LONG \t $longbody \n") if $longbody;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;###################USE FOR DEBUG################################&lt;br /&gt;#$Data::Dumper::Purity=1;&lt;br /&gt;##$Data::Dumper::Pad="####PAD####";&lt;br /&gt;#$Data::Dumper::Sortkeys="1";&lt;br /&gt;##$Data::Dumper::Varname="#VAR#";&lt;br /&gt;#print Dumper($items);&lt;br /&gt;###################USE FOR DEBUG################################&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-1849275991359464221?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/1849275991359464221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=1849275991359464221' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1849275991359464221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1849275991359464221'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2008/02/oodle-api-with-perl-and-frontierclient.html' title='Oodle API with Perl and Frontier::Client'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-2285472968888969714</id><published>2007-12-29T05:32:00.000-08:00</published><updated>2007-12-29T05:55:04.413-08:00</updated><title type='text'>Digital Photo Frames, FAT16 and Directory limits</title><content type='html'>&lt;p&gt;One problem with FAT16 (&lt;a href="http://en.wikipedia.org/wiki/File_Allocation_Table"&gt;Final FAT16&lt;/a&gt;) filesystems is the limit on the number of files which can be put into a folder (including the root). The limit is 512 8.3 Files or fewer longer named files. My stepdad had just got a shiny new Philips photo frame and a 2G SD Card and was having a problem with the Card reporting it was full. I now realise why camera cards place the images into folders. All those poor Camera manufacturers are having to create directories in firmware because the FAT16 filestem has been adopted by them. Sigh.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;After some deliberation, I decided to install &lt;a href="http://www.activestate.com"&gt;ActiveState Perl&lt;/a&gt;, &lt;a href="http://www.imagemagick.org"&gt;ImageMagick&lt;/a&gt; and write a Perl script to do some work:&lt;/br&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Remove all the whitespace from the filenames.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Shrink all the files to 800x600.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Convert everything to a JPEG (some bitmaps existed in his photo collection).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Place a maximum of 100 files in a directory/folder. Create a number of directories on the fly depending on how many files were being created.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pickup files stored in a flat directory E:/Photos/Frame/INCOMING&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Place shrunken jpg images in a flat directory E:/Photos/Frame/OUTGOING/FRAMx (where x is a number). These folders can then be dragged and dropped onto the card in a card reader.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ignore .AVI, .MPG and .DB files ( .DB == Picasa directory entries)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;#!perl&lt;br /&gt;&lt;br /&gt;#    Tim Gibbon 2007&lt;br /&gt;#    This program is free software: you can redistribute it and/or modify&lt;br /&gt;#    it under the terms of the GNU General Public License as published by&lt;br /&gt;#    the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;#    (at your option) any later version.&lt;br /&gt;#&lt;br /&gt;#    This program is distributed in the hope that it will be useful,&lt;br /&gt;#    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;#    GNU General Public License for more details.&lt;br /&gt;#&lt;br /&gt;#    You should have received a copy of the GNU General Public License&lt;br /&gt;#    along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use Image::Magick;&lt;br /&gt;use File::Path;&lt;br /&gt;&lt;br /&gt;my $incoming_directory="E:/Photos/Frame/INCOMING/";&lt;br /&gt;my $outgoing_directory="E:/Photos/Frame/OUTGOING/";&lt;br /&gt;my $directory_name_seed="FRAN";&lt;br /&gt;my $number_of_files_per_dir=100;&lt;br /&gt;my @incoming_files;&lt;br /&gt;my @alldirs;&lt;br /&gt;my $file_counter=0;&lt;br /&gt;my $dir_counter=0;&lt;br /&gt;&lt;br /&gt;die "Cannot find Incoming directory $incoming_directory $!\n" unless -e $incoming_directory;&lt;br /&gt;&lt;br /&gt;die "Cannot find Outgoing directory $outgoing_directory $!\n" unless -e $outgoing_directory;&lt;br /&gt;&lt;br /&gt;opendir (INCOMING,"$incoming_directory");&lt;br /&gt;foreach (readdir(INCOMING)){&lt;br /&gt;   chomp;&lt;br /&gt;   next if /^\./;&lt;br /&gt;   next if /avi$/;&lt;br /&gt;   next if /mpg$/;&lt;br /&gt;   next if /db$/;&lt;br /&gt;#/&lt;br /&gt;&lt;br /&gt;   my $incoming_file=$_;&lt;br /&gt;   my ($firstportion,$secondportion)=split/\./;&lt;br /&gt;#/&lt;br /&gt;   next unless $secondportion;&lt;br /&gt;   push (@incoming_files,"$incoming_file");&lt;br /&gt;}&lt;br /&gt;closedir (INCOMING);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;my $number_of_incoming_files=$#incoming_files;&lt;br /&gt;&lt;br /&gt;print "There are $number_of_incoming_files Incoming files\n";&lt;br /&gt;&lt;br /&gt;my $number_of_outgoing_dirs=(int($number_of_incoming_files/$number_of_files_per_dir))+1;&lt;br /&gt;print "Therefore I need $number_of_outgoing_dirs directories\n";&lt;br /&gt;&lt;br /&gt;for (1..$number_of_outgoing_dirs){&lt;br /&gt;&lt;br /&gt;my $dir_to_make="$outgoing_directory$directory_name_seed$_";&lt;br /&gt;push(@alldirs,$dir_to_make);&lt;br /&gt;print ("Cleaning then Making $dir_to_make\n");&lt;br /&gt;#################BE VERY CAREFUL WITH THE BELOW LINE##############################&lt;br /&gt;#######IT WILL REMOVE ALL FILES AND FOLDERS IN $dir_to_make#######################&lt;br /&gt;rmtree(["$dir_to_make"]);&lt;br /&gt;mkpath(["$dir_to_make"]) or die "Cannot make directory $dir_to_make $!";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;foreach (@incoming_files){&lt;br /&gt;&lt;br /&gt;   my ($firstportion,$secondportion)=split/\./;&lt;br /&gt;   $firstportion=~s/\W+/_/g;&lt;br /&gt;   next unless $secondportion;&lt;br /&gt;   print ("File counter $file_counter\n");&lt;br /&gt;   $file_counter++;&lt;br /&gt;   $dir_counter++ if ((int($file_counter/$number_of_files_per_dir) &gt; $dir_counter));&lt;br /&gt;   print ("Dir counter $dir_counter\n");&lt;br /&gt;   my $outgoing_sort="$alldirs[$dir_counter]"."/$firstportion\.jpg";&lt;br /&gt;   print ("Filename to use is $outgoing_sort\n");&lt;br /&gt;&lt;br /&gt;#/&lt;br /&gt;   my $image=Image::Magick-&gt;new;&lt;br /&gt;   $image-&gt;Read("$incoming_directory$_");&lt;br /&gt;   my ($current_columns,$current_rows)=$image-&gt;Get('base-columns','base-rows');&lt;br /&gt;&lt;br /&gt;# Do scaling based on Orientation.&lt;br /&gt;   if ($current_rows &gt; $current_columns ) {&lt;br /&gt;        $image-&gt;Scale(geometry =&gt; '600x800');&lt;br /&gt;    } elsif ($current_columns &gt; $current_rows){&lt;br /&gt;        $image-&gt;Scale(geometry =&gt; '800x600');&lt;br /&gt;    } else {&lt;br /&gt;        $image-&gt;Scale(geometry =&gt; '600x800');&lt;br /&gt;    }&lt;br /&gt;#         $image-&gt;(format =&gt; "png")&lt;br /&gt;        $image-&gt;Write("jpg:$outgoing_sort");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I placed all my stepdad's photos (4.2G) into INCOMING and it converted the entire lot in a couple of hours and shrank them down to 1G. Not bad for 2 hours work if I do say so.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-2285472968888969714?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/2285472968888969714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=2285472968888969714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2285472968888969714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2285472968888969714'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/12/digital-photo-frames-fat16-and.html' title='Digital Photo Frames, FAT16 and Directory limits'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6722129171093298940</id><published>2007-12-12T02:38:00.000-08:00</published><updated>2007-12-12T03:06:52.402-08:00</updated><title type='text'>Bridging and Routing using WRT54GL</title><content type='html'>&lt;h1&gt;The problems when Gateways disappear.&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;A client has an unstable wireless link (the building housing the ADSL router is 50m from the Office building housing the bridge) and there is a shutter on the window. Needless to say the signal strength isn't great. However, the problem comes when the Office building loses connection with the ADSL router. The ADSL router is currently the default gateway and DNS server for the office. All hell breaks loose when the router goes down.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I needed a solution which looked like the following&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;|ADSL router|    802.11g   |Office gateway|&lt;br /&gt;|   WAG200G |&lt;------------&gt;|    WRT54GL   |&lt;br /&gt;|192.168.1.1|              |10.0.0.1      |&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Obviously the bridged mode built into White Russian (RC6) isn't great for this as it requires that the router and gateway be on the same subnet. I'm stuck with keeping the office on the 10.0.0.0/24 subnet as it has legacy devices and it's a pain in the bum changing everything.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Following the instructions here: &lt;a href="http://www.littlecamels.com/2006/11/30/running-a-linksys-wrt54gl-in-client-mode"&gt;Linksys in bridged router mode.&lt;/a&gt;, I managed to get a setup similar to the following working:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;|ADSL router|    Wired  |      Dedicated wireless AP    |  802.11g   |Office routed bridge| Wired&lt;br /&gt;|   WAG200G |&lt;---------&gt;|            WRT54GL            |&lt;----------&gt;|       WRT54GL      |----&gt;*&lt;br /&gt;|192.168.1.1|           |DHCP (192.168.1.70)    10.0.1.1|            |10.0.1.2    10.0.0.1| &lt;br /&gt;&lt;br /&gt;* = Office devices.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The reason for the dedicated wireless AP is to allow 9-16DBi booster aerials to be put onto one or both ends of link. The WAG200G has a fixed aerial (sadly).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The Dedicated wireless AP runs as an out of the box White Russian access point. The Office routed bridge is a flashed &lt;a href="www.openwrt.org"&gt;White Russian&lt;/a&gt;, with the following commands run (where 11111111 is the WEP key of the Dedicated wireless AP). &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;root@OpenWrt:/# nvram set wl0_mode=sta&lt;br /&gt;root@OpenWrt:/# nvram set lan_ifname=br0&lt;br /&gt;root@OpenWrt:/# nvram set lan_ifnames=vlan0&lt;br /&gt;root@OpenWrt:/# nvram set wan_ifname=eth1&lt;br /&gt;root@OpenWrt:/# nvram set lan_ipaddr=10.0.0.1&lt;br /&gt;root@OpenWrt:/# nvram set lan_proto=static&lt;br /&gt;root@OpenWrt:/# nvram set wan_proto=dhcp&lt;br /&gt;root@OpenWrt:/# nvram commit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;root@OpenWrt:~# iwlist eth1 scanning&lt;br /&gt;eth1      No scan results&lt;br /&gt;root@OpenWrt:~# iwlist eth1 scanning&lt;br /&gt;eth1      Scan completed :&lt;br /&gt;          Cell 01 - Address: 00:1C:10:B2:18:34&lt;br /&gt;                    ESSID:"myssid"&lt;br /&gt;                    Mode:Master&lt;br /&gt;                    Channel:1&lt;br /&gt;                    Quality:0/0  Signal level:-39 dBm  Noise level:-98 dBm&lt;br /&gt;                    Encryption key:on&lt;br /&gt;                    Bit Rate:1 Mb/s&lt;br /&gt;                    Bit Rate:2 Mb/s&lt;br /&gt;                    Bit Rate:5.5 Mb/s&lt;br /&gt;                    Bit Rate:11 Mb/s&lt;br /&gt;                    Bit Rate:18 Mb/s&lt;br /&gt;                    Bit Rate:24 Mb/s&lt;br /&gt;                    Bit Rate:36 Mb/s&lt;br /&gt;                    Bit Rate:54 Mb/s&lt;br /&gt;                    Bit Rate:6 Mb/s&lt;br /&gt;                    Bit Rate:9 Mb/s&lt;br /&gt;                    Bit Rate:12 Mb/s&lt;br /&gt;                    Bit Rate:48 Mb/s&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;root@OpenWrt:~# ifdown wan&lt;br /&gt;root@OpenWrt:~# nvram set wl0_ssid=myssid&lt;br /&gt;root@OpenWrt:~# nvram set wl0_channel=1&lt;br /&gt;root@OpenWrt:~# nvram set wl0_wep=enabled&lt;br /&gt;root@OpenWrt:~# nvram set wl0_key=1&lt;br /&gt;root@OpenWrt:~# nvram set wl0_key1=11111111&lt;br /&gt;root@OpenWrt:~# ifup wan; /sbin/wifi&lt;br /&gt;root@OpenWrt:~# nvram commit&lt;br /&gt;root@OpenWrt:~# reboot&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now the system is resilient against the wireless link failing - ok they won't be able to get to the internet, but the Office equipment will play nicely as they will have their gateway always visible.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Obviously the system could be simplified further by removing the dedicated Wireless AP and changing the WEP and Wireless settings to those of the WAG200G. However this would mean no external aerial on the ADSL end.:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;|ADSL router|   802.11g  |   Office bridge                  |Wired&lt;br /&gt;|   WAG200G |&lt;----------&gt;|       WRT54GL                    |----&gt;*&lt;br /&gt;|192.168.1.1|            |DHCP (192.168.1.70)      10.0.0.1 | &lt;br /&gt;&lt;br /&gt;* = Office devices.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6722129171093298940?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6722129171093298940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6722129171093298940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6722129171093298940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6722129171093298940'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/12/bridging-and-routing-using-wrt54gl.html' title='Bridging and Routing using WRT54GL'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-5160745482534517110</id><published>2007-12-04T04:27:00.001-08:00</published><updated>2007-12-04T04:39:32.381-08:00</updated><title type='text'>Remembering that foreach uses whitespace separated arguments</title><content type='html'>&lt;p&gt;I've forgotten this 3 times, so it's time to blog it. I have a client who has named directories with whitespace inside as /Users/joe/foo/foo bar/bart/. Obviously I need to be savvy to these when performing operations such as chmod, chgrp etc.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I'm already using a find command to find the troublesome directories and perform operations on them. Lets say I have a list of files such as:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cat foo.txt&lt;br /&gt;/Users/joe/foo/foo bar/bart&lt;br /&gt;/Users/joe/foo/foo bar/foo&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The problem is that in shell script land the easiest thing to do is loop through these with a foreach&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;for FILE in `cat foo.txt`;&lt;br /&gt;do&lt;br /&gt;ls -l "${FILE}"&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;tng@monty:~/Desktop$ ./foo.sh&lt;br /&gt;ls: /Users/joe/foo/foo: No such file or directory&lt;br /&gt;ls: bar/bart: No such file or directory&lt;br /&gt;ls: /Users/joe/foo/foo: No such file or directory&lt;br /&gt;ls: bar/foo: No such file or directory&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This doesn't work because the for splits on whitespace and not on the newline character. The correct way of doing this is using the following:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;#Avoid nasty problems with whitespace in foo.txt&lt;br /&gt;&lt;br /&gt;cat foo.txt | while read ANYOLD_FILE_LIST;&lt;br /&gt;do&lt;br /&gt;ls -l "${ANYOLD_FILE_LIST}"&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This reads each line into ANYOLD_FILE_LIST and works.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-5160745482534517110?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/5160745482534517110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=5160745482534517110' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5160745482534517110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5160745482534517110'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/12/remembering-that-foreach-uses.html' title='Remembering that foreach uses whitespace separated arguments'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-2997093600751431563</id><published>2007-11-19T11:51:00.000-08:00</published><updated>2007-11-19T12:04:12.644-08:00</updated><title type='text'>HPGL/2 plot files to a HP DesignJet 500</title><content type='html'>&lt;h2&gt;Bentley Microstation Plot Files to a TCP/IP printer under OS X/Classic&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;A customer was using Bentley Microstation for Architectural Drawings. They use OS 9 (Classic) to run Microstation and were having to send the plots manually to a machine running Classic to print through a serial port to a DesignJet 430. Ideally, the customer wanted to move the entire printing onto a new HP DesignJet 500 which is just the bees knees.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The problem is that Microstation for OS 9 is just not built for a network aware environment (the UNIX and Windows versions are). No matter how much I played with the HPGL/2 hpdesign.plt I couldn't get it to see anything on the network (Samba shares, AFP....). It just doesn't play nicely with OS X. Plotutil (a batching conduit for Microstation doesn't know about TCP/IP or remote printer spools). So I read up on the plotfile output from Microstation and it turns out that it is a generic HPGL/2 file. All I needed to do was send it to the Plotter.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The HPGL/2 card supports printing via ftp - simply login with any username/password, set the mode to bin and put the file onto the printer. Wahey. Lovely plots result.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Two installs of &lt;a href="http://cyberduck.ch/"&gt;CyberDuck&lt;/a&gt; later and we had a drag and drop replacement for PlotUtil.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-2997093600751431563?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/2997093600751431563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=2997093600751431563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2997093600751431563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2997093600751431563'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/11/hpgl2-plot-files-to-hp-designjet-500.html' title='HPGL/2 plot files to a HP DesignJet 500'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-7028502901405667502</id><published>2007-11-11T10:16:00.000-08:00</published><updated>2007-11-11T10:19:23.295-08:00</updated><title type='text'>Default lp - No Default destination available.</title><content type='html'>&lt;p&gt;When getting an error like:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tng@monty:/mnt$ a2ps datastore_instructions.txt&lt;br /&gt;[datastore_instructions.txt (plain): 2 pages on 1 sheet]&lt;br /&gt;/usr/bin/lp: Error - no default destination available.&lt;br /&gt;[Total: 2 pages on 1 sheet] sent to the default printer&lt;br /&gt;[15 lines wrapped]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Set the default printer using:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tng@monty:/mnt$ lpoptions -d lp0&lt;br /&gt;job-sheets=none,none printer-info=Potter printer-is-accepting-jobs=1 printer-is-shared=1 printer-make-and-model='Generic PostScript Printer Foomatic/Postscript (recommended)' printer-state=3 printer-state-change-time=1177256251 printer-state-reasons=none printer-type=12316&lt;br /&gt;tng@monty:/mnt$ ls -lrt&lt;br /&gt;total 8&lt;br /&gt;drwxrwS--- 2  501 600 4096 2007-11-11 16:58 BACKUP&lt;br /&gt;-rw-rw-rw- 1 root 600 3035 2007-11-11 17:53 datastore_instructions.txt&lt;br /&gt;-rw-rw-r-- 1 2000 600    0 2007-11-11 17:55 foo&lt;br /&gt;tng@monty:/mnt$ a2ps datastore_instructions.txt&lt;br /&gt;[datastore_instructions.txt (plain): 2 pages on 1 sheet]&lt;br /&gt;request id is lp0-74 (1 file(s))&lt;br /&gt;[Total: 2 pages on 1 sheet] sent to the default printer&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-7028502901405667502?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/7028502901405667502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=7028502901405667502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/7028502901405667502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/7028502901405667502'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/11/default-lp-no-default-destination.html' title='Default lp - No Default destination available.'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6265091969987270710</id><published>2007-11-03T11:57:00.000-07:00</published><updated>2008-01-31T08:03:17.342-08:00</updated><title type='text'>Vostro 1700 Gutsy Gibbon working xorg.conf (nvidia acceleration)</title><content type='html'>&lt;h2&gt;Working xorg.conf&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Gutsy Gibbon and the proprietary nvidia drivers don't play nicely if you wish to use different modes than the 1920x1200 native resolution. I managed to fix it using the nvidia-xconfig tool&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Attached is my /etc/X11/xorg.conf.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# nvidia-xconfig: X configuration file generated by nvidia-xconfig&lt;br /&gt;# nvidia-xconfig:  version 1.0  (buildmeister@builder3)  Thu Oct  4 10:33:51 PDT 2007&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Section "ServerLayout"&lt;br /&gt;    Identifier     "Layout0"&lt;br /&gt;    Screen      0  "Screen0" 0 0&lt;br /&gt;    InputDevice    "Keyboard0" "CoreKeyboard"&lt;br /&gt;    InputDevice    "Mouse0" "CorePointer"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Files"&lt;br /&gt;    RgbPath         "/usr/lib/X11/rgb"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Module"&lt;br /&gt;    Load           "dbe"&lt;br /&gt;    Load           "extmod"&lt;br /&gt;    Load           "type1"&lt;br /&gt;    Load           "freetype"&lt;br /&gt;    Load           "glx"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;&lt;br /&gt;    # generated from default&lt;br /&gt;    Identifier     "Mouse0"&lt;br /&gt;    Driver         "mouse"&lt;br /&gt;    Option         "Protocol" "auto"&lt;br /&gt;    Option         "Device" "/dev/input/mice"&lt;br /&gt;    Option         "Emulate3Buttons" "no"&lt;br /&gt;    Option         "ZAxisMapping" "4 5"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;&lt;br /&gt;    # generated from default&lt;br /&gt;    Identifier     "Keyboard0"&lt;br /&gt;    Driver         "kbd"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;    Identifier     "Monitor0"&lt;br /&gt;    VendorName     "Unknown"&lt;br /&gt;    ModelName      "Unknown"&lt;br /&gt;    HorizSync       30.0 - 110.0&lt;br /&gt;    VertRefresh     50.0 - 150.0&lt;br /&gt;    Option         "DPMS"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;    Identifier     "Device0"&lt;br /&gt;    Driver         "nvidia"&lt;br /&gt;    VendorName     "NVIDIA Corporation"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Screen"&lt;br /&gt;    Identifier     "Screen0"&lt;br /&gt;    Device         "Device0"&lt;br /&gt;    Monitor        "Monitor0"&lt;br /&gt;    DefaultDepth    24&lt;br /&gt;    Option         "UseEdidFreqs" "False"&lt;br /&gt;#    Option         "UseEdidDpi" "False"&lt;br /&gt;    Option         "ConstantDPI" "False"&lt;br /&gt;    SubSection     "Display"&lt;br /&gt;        Depth       24&lt;br /&gt;        Modes      "1920x1200" "1024x768"&lt;br /&gt;    EndSubSection&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6265091969987270710?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6265091969987270710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6265091969987270710' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6265091969987270710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6265091969987270710'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/11/vostro-1700-gutsy-gibbon-working.html' title='Vostro 1700 Gutsy Gibbon working xorg.conf (nvidia acceleration)'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6407593002096671529</id><published>2007-10-12T01:57:00.000-07:00</published><updated>2007-10-12T02:06:10.295-07:00</updated><title type='text'>Vostro 1700 update</title><content type='html'>&lt;p&gt;I contacted Dell on Monday, explained the situation and the ongoing fan. They planned to send another engineer out to reconnect the fan. I explained that I was unhappy with this because it's the 3rd fault, the temp has exceeded 81 degrees and so may have caused lasting damage to a component. [ Note that linux showed that no fan was present in /proc/acpi/fan/ - FAN0 was missing. /proc/cpuinfo showed that the system ran at 800MHz by default (2GHz CPU) and /proc/acpi/*/temp showed the 81 degree figure ] when running perl script - will compare and contrast with the new replacement model.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;They accepted the fault completely, after consulting with a supervisor I got the result.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;They are sending me a new laptop as a priority and giving me a week to migrate my data over. Top notch customer service from Dell. I cannot fault the competence and response that I have received from them.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;use warnings;&lt;br /&gt;use strict;&lt;br /&gt;print ("The program ramps up the CPU and hopefully the fan will kick in&lt;br /&gt;\n Cntrl-C to interrupt\n");&lt;br /&gt;while (1) {&lt;br /&gt;my $e++;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6407593002096671529?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6407593002096671529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6407593002096671529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6407593002096671529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6407593002096671529'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/10/vostro-1700-update.html' title='Vostro 1700 update'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6791942933455534145</id><published>2007-10-07T12:35:00.000-07:00</published><updated>2007-10-07T12:46:08.585-07:00</updated><title type='text'>Repairing squashed speaker cone</title><content type='html'>&lt;h3&gt;Before&lt;/h3&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_EjK7a75bRts/Rwk120zGJCI/AAAAAAAAAAU/_uYbr8goYbY/s1600-h/IMG_2677_med.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_EjK7a75bRts/Rwk120zGJCI/AAAAAAAAAAU/_uYbr8goYbY/s320/IMG_2677_med.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5118681667485443106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Our 15 month old recently pushed in the cone on my wife's Tannoy speakers. We knew it was going to happen but my wife had thrown away the covers 6-8 years ago. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;After a bit of googling, I tried using the pencil and sticky tape method, but no dice.&lt;br /&gt;I tried using a straw to suck the cone gently out. Still no movement.&lt;br /&gt;I decided it was time to try the dyson hose with no attachments. I gradually moved the hose closer and closer to the cone until I could see it vibrate then it just popped perfectly back into place.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;After&lt;/h3&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_EjK7a75bRts/Rwk2iUzGJDI/AAAAAAAAAAc/9uGb1mociXU/s1600-h/IMG_2678_med.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_EjK7a75bRts/Rwk2iUzGJDI/AAAAAAAAAAc/9uGb1mociXU/s320/IMG_2678_med.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5118682414809752626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Needless to say, the Tannoy's have now been moved into the loft and replaced by my cheapo Mission 760s. They still sound great to my untrained ear - I had forgotten how much bass the little speakers deliver.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6791942933455534145?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6791942933455534145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6791942933455534145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6791942933455534145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6791942933455534145'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/10/repairing-squashed-speaker-cone.html' title='Repairing squashed speaker cone'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_EjK7a75bRts/Rwk120zGJCI/AAAAAAAAAAU/_uYbr8goYbY/s72-c/IMG_2677_med.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-1421459476788907677</id><published>2007-10-07T01:55:00.000-07:00</published><updated>2007-10-07T02:22:24.740-07:00</updated><title type='text'>Dell Vostro 1700 woes</title><content type='html'>&lt;h1&gt;Dell Vostro 1700&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;So I recently bought a &lt;a href="http://www1.euro.dell.com/content/products/productdetails.aspx/vostronb_1700"&gt;Dell Vostro 1700&lt;/a&gt;. It seemed to me that this laptop had everything that I needed. 17" 1920x1200 display, 2G of RAM, 160G hard disk (and 2nd hard drive bay for expansion possibilities), Santa Rosa CPU (64Bit and VT extensions), 256MB Nvidia Graphics card. How could I possibly go wrong for 700 quid? &lt;/p&gt;&lt;br /&gt;&lt;p&gt;I was warned that the it would take 4 weeks for delivery, so went in with an open mind. It turned up in 2.5 weeks. Excellent.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;First fault&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;So I powered it on for the first time. The number lock lit, then flashed. The power light lit. The HDD light lit quickly then switched off. The Bluetooth light lit quickly then switched off. The laptop continued flashing the number lock for 30 seconds then shut itself down. Nothing had appeared on the screen during this time. &lt;B&gt;Sigh.&lt;/B&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Call to Dell. Get quickly passed to second line support. Extremely impressed- they quickly ramped up to my technical ability. We were going to reseat the removable SODIMM with the battery and power removed. Done. Still no boot. Continue to remove all the field replaceable components (DVD, HDD, Memory). Still no boot with those components removed. The Engineer arranges a field engineer to visit on Monday to replace the Motherboard and Memory (under the keyboard as well as SO-DIMM). I ask him what state to return the laptop to. He said replace the components. I did this. I then did a quick test and what do you know - it boots! I ring Dell back and cancel the field Engineer's visit.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Second fault&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;The laptop then locks solid during whilst booted into Ubuntu (Windows Vista has made it nice and easy to repartition NTFS these days). I switched off and back on and get the blinking lights again. I reseat the removable SODIMM, and wahey it boots. This happens again 2 days leter. Ring Dell back and tell them that there is still a problem. They arrange a field engineer to visit and replace the motherboard and SODIMMs. Excellent. The engineer visits as planned and the laptop is trouble free apart from.....&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Third fault&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;I had terrible response from glxgears - 6000 frames/second dropping to 1700 consistently. When switching on the laptop I get 6000 frames for 30 seconds or so, then 1700 until reboot. Hmmmm... The laptop also feels sluggish. I switched off Intel Speedstep I get 6000 frames or so for a minute, but then lose it after 2 minutes or so. Windows Experience Index gives me 1.5 due to CPU and Memory calculations. Ouch. The laptop is hot and no sign of my left hand heating. Look at the underside of the Motherboard and the fan isn't spinning. Ouch. It doesn't spin at power on, it doesn't spin whilst booted. The fan spun before the engineer visited, as I remember my driving hand being hot. Oops. Looks like either the fan has failed (unlikely as the BIOS/POST would spot this) or the engineer has failed to connect the fan. Needless to say Dell will be getting another call. I will attempt to insist on a new laptop as I'm not convinced they can keep bodging the same &lt;a href="http://www.phrases.org.uk/meanings/143350.html"&gt;Friday afternoon car&lt;/a&gt;. Sigh.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-1421459476788907677?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/1421459476788907677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=1421459476788907677' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1421459476788907677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/1421459476788907677'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/10/dell-vostro-1700-woes.html' title='Dell Vostro 1700 woes'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8298226875771187220</id><published>2007-09-24T07:38:00.000-07:00</published><updated>2007-09-24T07:40:26.776-07:00</updated><title type='text'>MySQL search and replace goodness</title><content type='html'>&lt;h2&gt;Why I love MySQL.....&lt;/h2&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mysql&gt; UPDATE selldata SET advert = REPLACE(advert,'_','-');&lt;br /&gt;Query OK, 2 rows affected (0.15 sec)&lt;br /&gt;Rows matched: 2  Changed: 2  Warnings: 0&lt;br /&gt;&lt;br /&gt;mysql&gt; SELECT advert FROM selldata;&lt;br /&gt;+------------------+&lt;br /&gt;| advert           |&lt;br /&gt;+------------------+&lt;br /&gt;| 1188978590-1.htm |&lt;br /&gt;| 1188978590-2.htm |&lt;br /&gt;+------------------+&lt;br /&gt;2 rows in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; UPDATE selldata SET advert = REPLACE(advert,'-','_');&lt;br /&gt;Query OK, 2 rows affected (0.00 sec)&lt;br /&gt;Rows matched: 2  Changed: 2  Warnings: 0&lt;br /&gt;&lt;br /&gt;mysql&gt; SELECT advert FROM selldata;&lt;br /&gt;+------------------+&lt;br /&gt;| advert           |&lt;br /&gt;+------------------+&lt;br /&gt;| 1188978590_1.htm |&lt;br /&gt;| 1188978590_2.htm |&lt;br /&gt;+------------------+&lt;br /&gt;2 rows in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8298226875771187220?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8298226875771187220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8298226875771187220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8298226875771187220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8298226875771187220'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/09/mysql-search-and-replace-goodness.html' title='MySQL search and replace goodness'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-2463286929767566877</id><published>2007-09-14T08:55:00.001-07:00</published><updated>2010-10-10T01:23:34.826-07:00</updated><title type='text'>RGB CMYK conversion in Gimp</title><content type='html'>&lt;p&gt;We had our A6 flyers rejected by &lt;a href="http://www.print24.co.uk/"&gt;Print 24&lt;/a&gt; because they weren't in a CMYK colourspace - I'd saved them as .jpg and away we went. Silly me- print24 did give notice about only accepting CMYK, but I thought I'd wing it and let them do the conversion.&lt;/p&gt;&lt;p&gt;Despite &lt;a href="http://www.gimp.org/"&gt;Gimp&lt;/a&gt; being a fantastic Image creation tool, it has it's limitations. The main drawback of it appears to be that it cannot do CMYK exports.&lt;/p&gt;&lt;p&gt;A bit of googling found me &lt;a href="http://www.blackfiveservices.co.uk/separate.shtml"&gt;this&lt;/a&gt;, which when coupled with the Adobe ICC Color Profiles, downloaded from &lt;a href="http://www.adobe.com/downloads/#a-e"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Recipe&lt;/h2&gt;&lt;h3&gt;Install pre-reqs&lt;/h3&gt;&lt;pre&gt;&lt;br /&gt;# apt-get install libtiff4 libtiff4-dev mrwtoppm-gimp liblcms1 liblcms1-dev&lt;br /&gt;# mkdir -p /usr/share/color/icc/&lt;br /&gt;# cd /usr/share/color/icc&lt;br /&gt;# unzip &lt;path to=""&gt;/AdobeICCProfilesWin_end-user.zip&lt;br /&gt;# mv */*.icc .&lt;br /&gt;&lt;/path&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Bodge the libtiff as separate assumes libtiff3&lt;/h3&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# cd /usr/lib&lt;br /&gt;# ln -s libtiff.so.4 libtiff.so.3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Install separate&lt;/h3&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# gunzip separate-gimp2-0.3_linux.tar.gz&lt;br /&gt;# tar xvf separate-gimp2-0.3_linux.tar&lt;br /&gt;# cd separate-0.3_linux/&lt;br /&gt;# cp separate /usr/lib/gimp/2.0/plug-ins/&lt;br /&gt;# cd separate-0.3_linux/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;h3&gt;Instructions - lifted from the &lt;a href="http://www.blackfiveservices.co.uk/separate.shtml"&gt;separate website&lt;/a&gt;&lt;/h3&gt;&lt;h4&gt;Separating an image:&lt;/h4&gt;&lt;p&gt;To convert an RGB image to CMYK format, bring up the right-button menu, and go to "Image-&gt;"  If the plugin in installed correctly, there will be a new menu, "Separate".  From this new menu, select "Separate (normal)"; you will be prompted to select an RGB source profile, and a CMYK destination profile.&lt;br /&gt;&lt;br /&gt;If you have installed the Adobe and sRGB profiles as per the instructions in the archive, you can just accept the defaults for testing, otherwise you'll have to locate the profiles manually.&lt;/p&gt;&lt;p&gt;A new image will be created with four greyscale layers, named "C", "M", "Y", and "K".&lt;/p&gt;&lt;p&gt;This gives a rough reconstruction of the colours, and is the next best thing to a true CMYK painting mode, since you can paint on the layer masks, and see the results in realtime.&lt;br /&gt;*NEW for 0.3* - the "primary" colours chosen for the "Separate (colour)" mode are now much more akin to the primaries used in printing, which are nowhere near as bright, saturated and downright lurid as pure screen Cyan and Magenta!  This gives a far more realistic preview of the colours.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Saving:&lt;/h4&gt;To save a CMYK TIFF for use in a DTP program, bring up the right-mouse-button menu, and select "Image-&gt;Separate-&gt;Save...".  Please note that saving an image this way won't clear the image's modified flag, so when closing, you'll be warned that the image hasn't been saved.  This won't be fixed until the plugin is capable of loading CMYK images. Until then, if you need to edit the CMYK image in the future, you need to save it off in XCF format, to preserve the layers.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Checking:&lt;/h4&gt;&lt;br /&gt;I used krita (KDE equivalent/successor to Gimp) to check that the images were ok - it recombines the CMYK and shows you the finished product.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# apt-get install krita&lt;br /&gt;$ krita A6_flyer_page_1.tiff &amp;amp;&lt;br /&gt;&lt;/pre&gt;All ok,so I zipped them up and sent them off to &lt;a href="http://www.print24.co.uk"&gt;print24&lt;/a&gt; - they were accepted!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-2463286929767566877?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/2463286929767566877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=2463286929767566877' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2463286929767566877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2463286929767566877'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/09/rgb-cmyk-conversion-in-gimp.html' title='RGB CMYK conversion in Gimp'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-4401672826778366293</id><published>2007-07-20T02:38:00.000-07:00</published><updated>2007-07-20T02:45:25.313-07:00</updated><title type='text'>Wireless print server fun</title><content type='html'>&lt;p&gt;Spent last weekend playing with a Netgear Wireless print server &lt;a href="http://www.netgear.com/Products/PrintServers/WirelessPrintServers/WGPS606.aspx"&gt;WGPS606&lt;/a&gt; for a customer who wanted to be able to print, but didn't want all the clutter (cables and noise) in their living room. The Wireless print server also has 4 ports, so ideal for a gaming adaptor.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The print server is excellent- it supports Windows and OS X, which suggests to me (although I didn't try it) that it should work with any CUPS based printing system. The customer's original printer broke, so he replaced with another one. This required a re-run of the Netgear software to pickup the new drivers, but all in all a doddle.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;It's very easy to setup and modify the print server, drivers can be pre-installed or installed during the Netgear install process.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-4401672826778366293?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/4401672826778366293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=4401672826778366293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4401672826778366293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4401672826778366293'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/07/wireless-print-server-fun.html' title='Wireless print server fun'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-4691938172956585916</id><published>2007-07-09T06:13:00.000-07:00</published><updated>2007-07-09T06:38:24.942-07:00</updated><title type='text'>CiD adware/malware removal</title><content type='html'>&lt;p&gt;Spent the weekend battling with a customer's PC which was constantly popping up adverts (For Ebay, WWF and loan sharks. Some of these people should know better and stop dealing with computer hijacking scumbags). The virus scanner was reporting that it had found lop.com and fixing it. Installed Lavasoft's Ad-aware and Spybot S&amp;D, but it would not correct the problem. I would have installed Windows Defender as Windows Genuine Advantage was installed. However, I can't guarantee that Windows is legitimate, so don't want to risk bricking a perfectly working PC.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Turns out that the malware was reinstalling itself by rolling back to a known state. Had to disable rollbacks, install &lt;a href="http://en.wikipedia.org/wiki/HijackThis"&gt;Hijack This (HJT)&lt;/a&gt; and find out what was causing the problem. A randomly named executable in C:\Documents and Settings\&lt;Username&gt;\Application Data\&lt;Random Directory&gt;\&lt;random Exe&gt; was being executed on startup. Removing the startup using Hijack This, rebooting and then removing the directory stopped the popups. In addition, I had to manually remove the localhost entries in C:\Windows\System\Drivers\etc\hosts. Sadly in disabling rollbacks, all his software installs suddenly applied and he ended up on Windows MP 11 (which he hates), IE7 etc. I was in the doghouse.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I don't know where the .exe came from and don't want to ask. All I know is that the &lt;Username&gt; was in the 11 year olds directory and not the Dad's.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;All this has made me wonder about the future of Windows computing. I think it has a future, but Microsoft need to get their house in order. As far as I'm concerned, no one should be able to subvert a browser in this manner. Microsoft and Google should lead by example and get rid of their toolbars. IE should be a lean ad-free browser and when the computer is rolling back, there should be a big red warning light stating that we've been hijacked.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;It is possible that &lt;a href="http://www.msgpluslive.net/help/faq/privacy/#open-port"&gt;these people&lt;/a&gt; could be responsible. However, Messenger Plus was not installed when I looked, but CiD is the company behind Messenger Plus. My advice is to avoid MSN like the plague. If you can't do that, then install &lt;a href="http://www.msgpluslive.net/help/faq/privacy/#open-port"&gt;Pidgin&lt;/a&gt;. Also, never install an .exe ever and run HJT regularly.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-4691938172956585916?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/4691938172956585916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=4691938172956585916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4691938172956585916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4691938172956585916'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/07/cid-adwaremalware-removal.html' title='CiD adware/malware removal'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-3438177117926310495</id><published>2007-06-20T13:34:00.000-07:00</published><updated>2007-06-20T13:54:56.067-07:00</updated><title type='text'>Backing up a crufty Dell laptop</title><content type='html'>&lt;p&gt;My dad has finally retired his aging Dell Inspiron 1100, replacing it with a new shiny model. I migrated all his data across using the fantastic free (as in beer) and not free (as in speech)&lt;a href="http://www.xxcopy.com/index.htm"&gt;XXCOPY&lt;/a&gt;. I didn't have time to install rsync and sshd on both machines which is how I would have done it properly. Still XXCOPY did the trick.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I'm left with his old laptop to clear down as it is heading to his stepson. In an ideal world, I would blitz the hard disk, reinstall OEM Windows XP Home and use the licence key on the bottom. I suspect that won't work though as the Dell licence key won't work with my OEM XP Home disk. Sigh. So I'm left to clear the system down as best I can, defrag the disk and remove the unnecessary applications.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I used &lt;a href="http://www.plop.at/"&gt;Ploplinux&lt;/a&gt; to copy the HDD contents onto an external USB disk, just in case I missed something in the XXCOPYing.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Things to try:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;See if a system restore utility on dad's laptop.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I might have a play with the Dell product key on the bottom of dad's laptop with an OEM install and see if it gets anywhere. I'll try on a kemu image and see what happens.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;What a tangled mess Microsoft weave.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-3438177117926310495?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/3438177117926310495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=3438177117926310495' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3438177117926310495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3438177117926310495'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/06/backing-up-crufty-dell-laptop.html' title='Backing up a crufty Dell laptop'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-5718027525504914938</id><published>2007-06-07T02:02:00.000-07:00</published><updated>2007-06-07T02:13:36.930-07:00</updated><title type='text'>Breathing new life into a dead iBook G3 14"</title><content type='html'>&lt;p&gt;Removing the hard drive from a failed &lt;a href="http://en.wikipedia.org/wiki/Ibook#iBook_G3_Dual_USB_.2812.1-inch_.26_14.1-inch.29"&gt;iBook 14" (A1007)&lt;/a&gt;. The owner had contacted Applecare and they assured him the laptop was dead. It had recently had the logic board replaced and was not booting, looked like it was failing POST (no chimes). The owner wanted to remove the hard drive, mount it in a 2.5" caddy and transfer the data onto his other Mac.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I received it and noted how badly the Applecare guys had put back together the case (it felt sloppy around the edges). There was one of the rubber feet missing and the battery was the wrong colour. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I started to remove the hard drive, based on &lt;a href="http://www.ifixit.com/Guide/Mac/iBook-G3-14-Inch/Hard-Drive/51/11"&gt;this guide&lt;/a&gt;, but checking at each stage whether the laptop booted. When I got to removing the Airport card, SODIMM and sheild, it booted. Woot. Narrowed the component down to the PCMCIA Airport card. There was a distinct whinny from the card area when the power button was pressed. Tried my own Airport card and it booted. Informed the owner and he's obviously delighted.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Makes me wonder why a failed PCMCIA card can cause a system not to boot. Answers on a postcard.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-5718027525504914938?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/5718027525504914938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=5718027525504914938' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5718027525504914938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5718027525504914938'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/06/breathing-new-life-into-dead-ibook-g3.html' title='Breathing new life into a dead iBook G3 14&quot;'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-7637508274126789297</id><published>2007-05-28T11:17:00.000-07:00</published><updated>2007-05-28T11:23:31.574-07:00</updated><title type='text'>Home taping is killing music</title><content type='html'>&lt;p&gt;In &lt;a href="http://www.spoiltvictorianchild.co.uk/2005/10/john-peel-was-hell-of-man.html"&gt;John Peel tradition&lt;/a&gt;, today we spent some time taping radio shows of interest. Found that the best way to enable sound card capture is to use alsamixer and unmute capture (space bar).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tng@coalman:/home/tng$ arecord -f cd -t wav -r 44000 -D hw:0,0 interesting_show.wav&lt;br /&gt;Recording WAVE 'interesting_show.wav' : Signed 16 bit Little Endian, Rate 44000&lt;br /&gt;Hz, Stereo&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Install vorbis tools to allow wav-&gt;ogg conversion.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo apt-get install vorbis-tools&lt;br /&gt;&lt;br /&gt;....snip&lt;br /&gt;&lt;br /&gt;root@coalman:/home/tng$ oggenc  interesting_show.wav&lt;br /&gt;Opening with wav module: WAV file reader&lt;br /&gt;Encoding "interesting_show.wav" to&lt;br /&gt;         "interesting_show.ogg"&lt;br /&gt;at quality 3.00&lt;br /&gt;        [100.0%] [ 0m00s remaining] -&lt;br /&gt;&lt;br /&gt;Done encoding file "interesting_show.ogg"&lt;br /&gt;&lt;br /&gt;        File length:  118m 22.0s&lt;br /&gt;        Elapsed time: 13m 30.9s&lt;br /&gt;        Rate:         8.7590&lt;br /&gt;        Average bitrate: 97.2 kb/s&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-7637508274126789297?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/7637508274126789297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=7637508274126789297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/7637508274126789297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/7637508274126789297'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/05/home-taping-is-killing-music.html' title='Home taping is killing music'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6518954078238907244</id><published>2007-05-23T11:05:00.000-07:00</published><updated>2007-05-23T11:15:34.106-07:00</updated><title type='text'>Recovering corrupted floppy using dd.</title><content type='html'>&lt;p&gt;Attempting to get all my PhD emails off floppies - &lt;b&gt;N.B.&lt;/b&gt; I know I'm sad for doing this but one day Hattie might get a laugh out of my archived emails. Using a USB floppy drive from ebay which had been written to on a SUN box in MS-DOS format. I knew the floppy was corrupted badly - see syslog output below:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;May 23 14:52:34 monty kernel: sd 0:0:0:5: SCSI error: return code = 0x08000002&lt;br /&gt;May 23 14:52:34 monty kernel: sdf: Current: sense key: Medium Error&lt;br /&gt;May 23 14:52:34 monty kernel:     Additional sense: Unrecovered read error&lt;br /&gt;May 23 14:52:34 monty kernel: Info fld=0x66&lt;br /&gt;May 23 14:52:34 monty kernel: end_request: I/O error, dev sdf, sector 102&lt;br /&gt;May 23 14:52:34 monty kernel: Buffer I/O error on device sdf, logical block 12&lt;br /&gt;May 23 14:52:46 monty kernel: sd 0:0:0:5: SCSI error: return code = 0x08000002&lt;br /&gt;May 23 14:52:46 monty kernel: sdf: Current: sense key: Medium Error&lt;br /&gt;May 23 14:52:46 monty kernel:     Additional sense: Unrecovered read error&lt;br /&gt;May 23 14:52:46 monty kernel: Info fld=0x66&lt;br /&gt;May 23 14:52:46 monty kernel: end_request: I/O error, dev sdf, sector 102&lt;br /&gt;May 23 14:52:46 monty kernel: Buffer I/O error on device sdf, logical block 12&lt;br /&gt;May 23 14:52:59 monty kernel: sd 0:0:0:5: SCSI error: return code = 0x08000002&lt;br /&gt;May 23 14:52:59 monty kernel: sdf: Current: sense key: Medium Error&lt;br /&gt;May 23 14:52:59 monty kernel:     Additional sense: Unrecovered read error&lt;br /&gt;May 23 14:52:59 monty kernel: Info fld=0x66&lt;br /&gt;May 23 14:52:59 monty kernel: end_request: I/O error, dev sdf, sector 102&lt;br /&gt;May 23 14:52:59 monty kernel: Buffer I/O error on device sdf, logical block 12&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Started looking at using dd with the noerror and sync options:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;dd if=/dev/sdg of=/home/tng/floppy_output.try bs=2x80x18b conv=noerror&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Discovered the fantastic dd_rescue and decided to give that a try:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Script started on Wed 23 May 2007 14:38:53 BST&lt;br /&gt;tng@monty: ~tng@monty:~$ dd_rescue /dev/sdf floppy_ddrescue.img&lt;br /&gt;dd_rescue: (info): ipos:        24.5k, opos:        24.5k, xferd:        24.5k&lt;br /&gt;                *  errs:     33, errxfer:        16.5k, succxfer:         8.0k&lt;br /&gt;             +curr.rate:      639kB/s, avg.rate:        0kB/s, avg.load:  0.0%&lt;br /&gt;dd_rescue: (warning): /dev/sdf (24.5k): Input/output error!&lt;br /&gt;&lt;br /&gt;dd_rescue: (info): ipos:      1440.0k, opos:      1440.0k, xferd:      1440.0k&lt;br /&gt;                   errs:    224, errxfer:       112.0k, succxfer:      1328.0k&lt;br /&gt;             +curr.rate:    11100kB/s, avg.rate:        2kB/s, avg.load:  0.0%&lt;br /&gt;&lt;br /&gt;tng@monty:~$ exit&lt;br /&gt;&lt;br /&gt;Script done on Wed 23 May 2007 16:10:33 BST&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As the file consisted of emails and I wasn't worried about concatenation, so simply edited the file using emacs (handles big files well).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;emacs floppy_ddrescue.img&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Deleted out the corruption at the start and end of the file and saved. Wahey- 11 year old emails recovered!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6518954078238907244?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6518954078238907244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6518954078238907244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6518954078238907244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6518954078238907244'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/05/recovering-corrupted-floppy-using-dd.html' title='Recovering corrupted floppy using dd.'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-2126033904751844099</id><published>2007-05-23T10:57:00.000-07:00</published><updated>2007-05-23T11:04:30.980-07:00</updated><title type='text'>Edubuntu install iBook G3</title><content type='html'>&lt;p&gt;Edubuntu installed without errors, other than a small problem with X-windows. As I'd used &lt;a href="http://www.reversemidastouch.com/code"&gt;Gnuplorer&lt;/a&gt; to backup the configuration before installation, it was simply a case of restoring the working xorg.conf:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#/etc/X11/xorg.conf (xorg X Window System server configuration file)&lt;br /&gt;#&lt;br /&gt;# This file was generated by dexconf, the Debian X Configuration tool, using&lt;br /&gt;# values from the debconf database.&lt;br /&gt;#&lt;br /&gt;# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.&lt;br /&gt;# (Type "man /etc/X11/xorg.conf" at the shell prompt.)&lt;br /&gt;#&lt;br /&gt;# This file is automatically updated on xserver-xorg package upgrades *only*&lt;br /&gt;# if it has not been modified since the last upgrade of the xserver-xorg&lt;br /&gt;# package.&lt;br /&gt;#&lt;br /&gt;# If you have edited this file but would like it to be automatically updated&lt;br /&gt;# again, run the following command:&lt;br /&gt;#   sudo dpkg-reconfigure -phigh xserver-xorg&lt;br /&gt;&lt;br /&gt;Section "Files"&lt;br /&gt;       FontPath        "/usr/share/X11/fonts/misc"&lt;br /&gt;       FontPath        "/usr/share/X11/fonts/cyrillic"&lt;br /&gt;       FontPath        "/usr/share/X11/fonts/100dpi/:unscaled"&lt;br /&gt;       FontPath        "/usr/share/X11/fonts/75dpi/:unscaled"&lt;br /&gt;       FontPath        "/usr/share/X11/fonts/Type1"&lt;br /&gt;       FontPath        "/usr/share/X11/fonts/100dpi"&lt;br /&gt;       FontPath        "/usr/share/X11/fonts/75dpi"&lt;br /&gt;       # path to defoma fonts&lt;br /&gt;       FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Module"&lt;br /&gt;       Load    "i2c"&lt;br /&gt;       Load    "bitmap"&lt;br /&gt;       Load    "ddc"&lt;br /&gt;       Load    "dri"&lt;br /&gt;       Load    "extmod"&lt;br /&gt;       Load    "freetype"&lt;br /&gt;       Load    "glx"&lt;br /&gt;       Load    "int10"&lt;br /&gt;       Load    "type1"&lt;br /&gt;       Load    "vbe"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;       Identifier      "Generic Keyboard"&lt;br /&gt;       Driver          "kbd"&lt;br /&gt;       Option          "CoreKeyboard"&lt;br /&gt;       Option          "XkbRules"      "xorg"&lt;br /&gt;       Option          "XkbModel"      "pc105"&lt;br /&gt;       Option          "XkbLayout"     "gb"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;       Identifier      "Configured Mouse"&lt;br /&gt;       Driver          "mouse"&lt;br /&gt;       Option          "CorePointer"&lt;br /&gt;       Option          "Device"                "/dev/input/mice"&lt;br /&gt;       Option          "Protocol"              "ExplorerPS/2"&lt;br /&gt;       Option          "ZAxisMapping"          "4 5"&lt;br /&gt;       Option          "Emulate3Buttons"       "true"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;       Identifier      "Synaptics Touchpad"&lt;br /&gt;       Driver          "synaptics"&lt;br /&gt;       Option          "SendCoreEvents"        "true"&lt;br /&gt;       Option          "Device"                "/dev/psaux"&lt;br /&gt;       Option          "Protocol"              "auto-dev"&lt;br /&gt;       Option          "HorizScrollDelta"      "0"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt; Driver        "wacom"&lt;br /&gt; Identifier    "stylus"&lt;br /&gt; Option        "Device"        "/dev/wacom"          # Change to&lt;br /&gt;                                                     # /dev/input/event&lt;br /&gt;                                                     # for USB&lt;br /&gt; Option        "Type"          "stylus"&lt;br /&gt; Option        "ForceDevice"   "ISDV4"               # Tablet PC ONLY&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt; Driver        "wacom"&lt;br /&gt; Identifier    "eraser"&lt;br /&gt; Option        "Device"        "/dev/wacom"          # Change to&lt;br /&gt;                                                     # /dev/input/event&lt;br /&gt;                                                     # for USB&lt;br /&gt; Option        "Type"          "eraser"&lt;br /&gt; Option        "ForceDevice"   "ISDV4"               # Tablet PC ONLY&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt; Driver        "wacom"&lt;br /&gt; Identifier    "cursor"&lt;br /&gt; Option        "Device"        "/dev/wacom"          # Change to&lt;br /&gt;                                                     # /dev/input/event&lt;br /&gt;                                                     # for USB&lt;br /&gt; Option        "Type"          "cursor"&lt;br /&gt; Option        "ForceDevice"   "ISDV4"               # Tablet PC ONLY&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;       Identifier      "ATI Technologies, Inc. Rage Mobility M3 AGP 2x"&lt;br /&gt;       Driver          "ati"&lt;br /&gt;       BusID           "PCI:0:16:0"&lt;br /&gt;       Option          "UseFBDev"              "true"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;       Identifier      "Generic Monitor"&lt;br /&gt;       Option          "DPMS"&lt;br /&gt;       HorizSync       28-51&lt;br /&gt;       VertRefresh     43-60&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Screen"&lt;br /&gt;       Identifier      "Default Screen"&lt;br /&gt;       Device          "ATI Technologies, Inc. Rage Mobility M3 AGP 2x"&lt;br /&gt;       Monitor         "Generic Monitor"&lt;br /&gt;       DefaultDepth    24&lt;br /&gt;       SubSection "Display"&lt;br /&gt;               Depth           1&lt;br /&gt;               Modes           "1024x768" "800x600" "640x480"&lt;br /&gt;       EndSubSection&lt;br /&gt;       SubSection "Display"&lt;br /&gt;               Depth           4&lt;br /&gt;               Modes           "1024x768" "800x600" "640x480"&lt;br /&gt;       EndSubSection&lt;br /&gt;       SubSection "Display"&lt;br /&gt;               Depth           8&lt;br /&gt;               Modes           "1024x768" "800x600" "640x480"&lt;br /&gt;       EndSubSection&lt;br /&gt;       SubSection "Display"&lt;br /&gt;               Depth           15&lt;br /&gt;               Modes           "1024x768" "800x600" "640x480"&lt;br /&gt;       EndSubSection&lt;br /&gt;       SubSection "Display"&lt;br /&gt;               Depth           16&lt;br /&gt;               Modes           "1024x768" "800x600" "640x480"&lt;br /&gt;       EndSubSection&lt;br /&gt;       SubSection "Display"&lt;br /&gt;               Depth           24&lt;br /&gt;               Modes           "1024x768" "800x600" "640x480"&lt;br /&gt;       EndSubSection&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "ServerLayout"&lt;br /&gt;       Identifier      "Default Layout"&lt;br /&gt;       Screen          "Default Screen"&lt;br /&gt;       InputDevice     "Generic Keyboard"&lt;br /&gt;       InputDevice     "Configured Mouse"&lt;br /&gt;       InputDevice     "stylus" "SendCoreEvents"&lt;br /&gt;       InputDevice     "cursor" "SendCoreEvents"&lt;br /&gt;       InputDevice     "eraser" "SendCoreEvents"&lt;br /&gt;       InputDevice     "Synaptics Touchpad"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "DRI"&lt;br /&gt;       Mode    0666&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I'm impressed with Edubuntu, although I think it might be a bit early to start Hattie on it. She's still happy attacking Dad's PowerBook G4.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-2126033904751844099?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/2126033904751844099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=2126033904751844099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2126033904751844099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2126033904751844099'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/05/edubuntu-install-ibook-g3.html' title='Edubuntu install iBook G3'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-5223997722535799511</id><published>2007-05-18T05:43:00.000-07:00</published><updated>2007-05-18T05:47:20.400-07:00</updated><title type='text'>Gnuplorer update</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.reversemidastouch.com/chegwin/gallery/hattie_may07/IMG_2085_med.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://www.reversemidastouch.com/chegwin/gallery/hattie_may07/IMG_2085_med.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Updated &lt;a href="http://www.reversemidastouch.com/code"&gt;Gnuplorer&lt;/a&gt; with useful things that I've been using recently - lsusb amongst others. Much easier now it's modular - all the commands to run are contained in a standalone .cfg. Edited that, and away we go.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Poked around on my Debian laptop (pictured with old Ubuntu sticker - see previous posts for details), to find what alternatives to Gnuplorer exist. Found a great product called Dconf which takes a snapshot and dumps everything into one file. This is really useful for diff/audit purposes. Updated documentation to make note.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-5223997722535799511?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/5223997722535799511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=5223997722535799511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5223997722535799511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5223997722535799511'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/05/gnuplorer-update.html' title='Gnuplorer update'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-4720394410970171065</id><published>2007-05-17T00:18:00.000-07:00</published><updated>2007-05-17T00:34:13.135-07:00</updated><title type='text'>Nagios fired up</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_EjK7a75bRts/RkwFOjepUnI/AAAAAAAAAAM/OEgHd7aowH8/s1600-h/800x600_nagios.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_EjK7a75bRts/RkwFOjepUnI/AAAAAAAAAAM/OEgHd7aowH8/s320/800x600_nagios.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5065429428485050994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;In an effort to build my Nagios in a box server, I've installed the default Debian Nagios install (1.4), apache (1.3).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Not really got any problems to speak of, apart from the host and hostgroup differences with contact_groups being allowed on a host in Nagios 2.x and only on a hostgroup in 1.x&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Downloaded my Nagios NFS plugin &lt;a href="http://www.nagiosexchange.org/Check_Plugins.21.0.html?&amp;tx_netnagext_pi1[p_view]=657"&gt;NFS plugin&lt;/a&gt; and pointed it back to the SLUG. All working brilliantly despite the Nagios downgrade.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tng@monty:/etc/nagios$ more checkcommands.cfg&lt;br /&gt;# checkcommands.cfg - Nagios configuration file for local user changes&lt;br /&gt;#&lt;br /&gt;# Nagios packages wont touch this file anymore. If you want to define&lt;br /&gt;# your own commands for nagios use this file and add the commands here.&lt;br /&gt;# Dont add any command with a name that already exists or nagios wont&lt;br /&gt;# run.&lt;br /&gt;define command {&lt;br /&gt;        command_name check_nfsmount&lt;br /&gt;        command_line $USER1$/check_nfsmount -H $HOSTADDRESS$&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;tng@monty:/etc/nagios$ more services.cfg&lt;br /&gt;&lt;br /&gt;define service{&lt;br /&gt;        use                             generic-service         ; Name of service template to use&lt;br /&gt;&lt;br /&gt;        host_name                       icybox&lt;br /&gt;        service_description             NFS checker&lt;br /&gt;        is_volatile                     0&lt;br /&gt;        check_period                    24x7&lt;br /&gt;        max_check_attempts              3&lt;br /&gt;        normal_check_interval           5&lt;br /&gt;        retry_check_interval            1&lt;br /&gt;        contact_groups                  linux-admins&lt;br /&gt;        notification_interval           240&lt;br /&gt;        notification_period             24x7&lt;br /&gt;        notification_options            c,r&lt;br /&gt;        check_command                   check_nfsmount&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Downed the services on the icybox (portmap and nfs-utils stopped) and Nagios alerted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-4720394410970171065?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/4720394410970171065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=4720394410970171065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4720394410970171065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/4720394410970171065'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/05/nagios-fired-up.html' title='Nagios fired up'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_EjK7a75bRts/RkwFOjepUnI/AAAAAAAAAAM/OEgHd7aowH8/s72-c/800x600_nagios.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-6161839471512821994</id><published>2007-05-11T16:09:00.000-07:00</published><updated>2007-05-11T16:10:30.480-07:00</updated><title type='text'>Ubuntu install fun</title><content type='html'>&lt;p&gt;Handed over my old Piano case PC with Zalman flower cooler, 2.8GHz processor, 1G RAM, "brand new " 80G hard drive (I broke into the static bag - it was a spare for my Sunblade 100). The PC has gone to a better place than the garage - my LLPartner. It was a mythtv project, with the remains of &lt;i&gt;withnail&lt;/i&gt; in it. Ubuntu install was a dream. We gave up trying to get both a Belkin USB RT73 and Netgear WG111v... to give us wireless access without resorting to NDISwrapper, so we decided to bridge the onboard ethernet to wireless.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Used my &lt;a href="http://openwrt.org/"&gt;OpenWRT&lt;/a&gt; flashed WRT54G (has survived a bricking and subsequent pin shorting), so is officially a Zombie router. Anyway, it seemed to make quite a nifty wireless bridge, but got to wait for Marty to report back.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Note to Martin - we need to upgrade the firmware on this puppy at some point. It's a learning experience doing it and shouldn't end up with us bricking it again, but Guff is good at getting a paper clip to the right shape if we mess up.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Got my WGA54G working after Martin had left - it uses 192.168.1.250 following a factory reset - push the reset key in and remove and plug in the power.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-6161839471512821994?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/6161839471512821994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=6161839471512821994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6161839471512821994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/6161839471512821994'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/05/ubuntu-install-fun.html' title='Ubuntu install fun'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-3516887876944218607</id><published>2007-05-07T11:15:00.000-07:00</published><updated>2008-05-20T12:20:54.861-07:00</updated><title type='text'>Scanning old photos</title><content type='html'>&lt;p&gt;&lt;br /&gt;I've just scanned in 300 photos from 1991-1994. The photos were remarkably well preserved- they've been kept under plastic and kept in boxes/albums. They were all 6x4s, so 4 fitted onto our A4 scanner nicely.&lt;/br&gt;&lt;br /&gt;I Used Ubuntu on my Thinkpad to scan them in - remarkably easy using the sane-utils to scan.&lt;br /&gt;For our A4 sized Canon LiDE scanner I used the following:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo apt-get install sane-utils&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Check in xsane that the scanner is recognised.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;scanimage -x 215 -y 297 --resolution 400 &gt; filename.pnm&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;On a Dell Vostro 1700:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;scanimage -x 215 -y 297 --resolution 400 -d plustek:libusb:004:002 &gt;filename.pnm&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Assuming you are scanning 6x4" photos, we can approximate the 4 scans per platter, I used the following shell script.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;for FILE in *.pnm&lt;br /&gt;do&lt;br /&gt;echo ${FILE}&lt;br /&gt;NEWFILE=`echo ${FILE} | cut -f1 -d'.'`&lt;br /&gt;echo $NEWFILE.jpg&lt;br /&gt;convert ${FILE} +gravity -crop 1729x2428 DONE/${NEWFILE}_%d.jpg&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Chop the image back into 4 photos using gimp, fix rotation on the sloppy scans and all done.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-3516887876944218607?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/3516887876944218607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=3516887876944218607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3516887876944218607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/3516887876944218607'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/05/scanning-old-photos.html' title='Scanning old photos'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8841860268057423521</id><published>2007-05-01T01:08:00.000-07:00</published><updated>2007-05-01T01:15:29.693-07:00</updated><title type='text'>Lunarlite LLP</title><content type='html'>&lt;p&gt;Lunarlite LLP has been approved by Companies House. We are now an official partnership, having to provide accounts, so we've settled on gnucash to run the accounts for us. Martin reckons the Win32 version is flakey, so he's going for a USB based Ubuntu install. &lt;a href="http://www.lunarlite.co.uk"&gt;Website&lt;/a&gt; has had a major revamp thanks to Martin's sterling efforts on the style sheets, both of us providing content and my new logo.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I'm really pleased with it. Added a new &lt;a href="http://www.lunarlite.co.uk/bus_ubuntu.html"&gt;Ubuntu&lt;/a&gt; support section and registered with the &lt;a href="http://www.ubuntu.com/support/commercial/marketplace/europe"&gt;Ubuntu marketplace&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Martin's busy sorting out local advertising today. All good stuff.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8841860268057423521?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8841860268057423521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8841860268057423521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8841860268057423521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8841860268057423521'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/05/lunarlite-llp.html' title='Lunarlite LLP'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-2009011891081211984</id><published>2007-04-30T12:32:00.000-07:00</published><updated>2007-04-30T12:33:10.687-07:00</updated><title type='text'>Converting Canon AVIs to MPGs</title><content type='html'>mencoder MVI_1974.AVI -vf scale=640:480 -o bobbins1.mpg -oac copy -ovc lavc -lavcopts vcodec=mpeg4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-2009011891081211984?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/2009011891081211984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=2009011891081211984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2009011891081211984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/2009011891081211984'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/04/converting-canon-avis-to-mpgs.html' title='Converting Canon AVIs to MPGs'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-8641454754699300584</id><published>2007-04-23T12:42:00.000-07:00</published><updated>2007-04-23T13:18:55.116-07:00</updated><title type='text'>1 down, 1 abandoned and 1 to go</title><content type='html'>&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;    Thinkpad (T41) upgrade via re-install of Ubuntu went fine. Used &lt;a href="http://www.reversemidastouch.com/code"&gt;gnuplorer&lt;/a&gt; to save network settings (since they were all I wanted to keep). Manual partitioning worked brilliantly and allowed me to keep my Windows XP QEMU images (contained on separate /dev/sda9 partition).&lt;br /&gt;&lt;br /&gt;One the Thinkpad was upgraded, proceded to use it to upgrade my Titanium Powerbook G4 Ubuntu to 7.04 (via network boot as it has no DVD drive).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote&gt;apt-get install tftp tftpd dhcpd&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Edited the /etc/dhcpd.conf&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;option domain-name "myhouse.com";&lt;br /&gt;option domain-name-servers 192.168.1.254;&lt;br /&gt;&lt;br /&gt;option subnet-mask 255.255.255.0;&lt;br /&gt;default-lease-time 600;&lt;br /&gt;max-lease-time 7200;&lt;br /&gt;&lt;br /&gt;subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;range 192.168.1.100 192.168.1.250;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edited /etc/default/dhcp and added the following&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;INTERFACES="eth1"&lt;/blockquote&gt;&lt;br /&gt;As the Powerbook was already running Ubuntu, when it prompted for CD or Gnu/Linux, I hit control Z. This dropped me to the firmware OBP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;boot enet:192.168.1.25,yaboot&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This went badly, firstly due to a problem with the yaboot.conf pointing to the root directory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Apr 22 12:45:19 coalman dhcpd: DHCPDISCOVER from 00:03:93:87:6b:cc via eth1&lt;br /&gt;Apr 22 12:45:19 coalman dhcpd: DHCPOFFER on 192.168.1.223 to 00:03:93:87:6b:cc via&lt;br /&gt;eth1&lt;br /&gt;Apr 22 12:45:19 coalman dhcpd: DHCPREQUEST for 192.168.1.64 from 00:03:93:87:6b:cc&lt;br /&gt;via eth1&lt;br /&gt;Apr 22 12:45:19 coalman dhcpd: DHCPNAK on 192.168.1.64 to 00:03:93:87:6b:cc via eth1&lt;br /&gt;Apr 22 12:45:20 coalman in.tftpd[10693]: connect from 192.168.1.64 (192.168.1.64)&lt;br /&gt;Apr 22 12:45:20 coalman tftpd[10694]: tftpd: trying to get file: yaboot&lt;br /&gt;Apr 22 12:45:20 coalman tftpd[10694]: tftpd: serving file from /tftpboot/DEBIAN&lt;br /&gt;Apr 22 12:47:05 coalman in.tftpd[10750]: connect from 192.168.1.64 (192.168.1.64)&lt;br /&gt;Apr 22 12:47:05 coalman tftpd[10751]: tftpd: trying to get file: yaboot&lt;br /&gt;Apr 22 12:47:05 coalman tftpd[10751]: tftpd: serving file from /tftpboot/DEBIAN&lt;br /&gt;Apr 22 12:47:06 coalman in.tftpd[10752]: connect from 192.168.1.64 (192.168.1.64)&lt;br /&gt;Apr 22 12:47:06 coalman tftpd[10753]: tftpd: trying to get file: yaboot.conf&lt;br /&gt;Apr 22 12:47:06 coalman tftpd[10753]: tftpd: serving file from /tftpboot/DEBIAN&lt;br /&gt;Apr 22 12:47:06 coalman in.tftpd[10754]: connect from 192.168.1.64 (192.168.1.64)&lt;br /&gt;Apr 22 12:47:06 coalman tftpd[10755]: tftpd: trying to get file: /boot.msg&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once that was fixed:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BEFORE:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;## This yaboot.conf is for hd-media booting only, do not use as reference.&lt;br /&gt;## Ubuntu 7.04 PowerPC&lt;br /&gt;&lt;br /&gt;default=install&lt;br /&gt;root=/dev/ram&lt;br /&gt;&lt;br /&gt;message=/boot.msg&lt;br /&gt;&lt;br /&gt;image=/vmlinux&lt;br /&gt;       label=install&lt;br /&gt;       initrd=/initrd.gz&lt;br /&gt;       initrd-size=17217&lt;br /&gt;       append="--"&lt;br /&gt;       read-only&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AFTER:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;## This yaboot.conf is for hd-media booting only, do not use as reference.&lt;br /&gt;## Ubuntu 7.04 PowerPC&lt;br /&gt;&lt;br /&gt;default=install&lt;br /&gt;root=/dev/ram&lt;br /&gt;&lt;br /&gt;message=boot.msg&lt;br /&gt;&lt;br /&gt;image=vmlinux&lt;br /&gt;       label=install&lt;br /&gt;       initrd=initrd.gz&lt;br /&gt;       initrd-size=17217&lt;br /&gt;       append="--"&lt;br /&gt;       read-only&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;it seems there is a &lt;a href="https://bugs.launchpad.net/ubuntu/+source/yaboot/+bug/26426"&gt;bug with loading &gt;6MB initrd.gz on PPC architectures.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I gave up, and went back to Debian on my PowerBook G4. I am impressed by how much it has moved on since last time I tried it:&lt;br /&gt;&lt;br /&gt;Final inetd.conf&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd&lt;br /&gt;/tftpboot/DEBIAN&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wireless networking worked immediately, my only problem lay with the xorg.conf&lt;br /&gt;&lt;br /&gt;Edited /etc/X11/xorg.conf&lt;br /&gt;&lt;br /&gt;diff /etc/X11/xorg.conf.stock /etc/X11/xorg.conf&lt;br /&gt;85a86,87&lt;br /&gt;&gt;         HorizSync    30-70&lt;br /&gt;&gt;         VertRefresh  50-160&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-8641454754699300584?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/8641454754699300584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=8641454754699300584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8641454754699300584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/8641454754699300584'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/04/1-down-1-abandoned-and-1-to-go.html' title='1 down, 1 abandoned and 1 to go'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3594071261505311749.post-5364810440700656947</id><published>2007-04-16T08:36:00.000-07:00</published><updated>2007-04-16T08:47:52.869-07:00</updated><title type='text'>First past the post</title><content type='html'>Only 4 days till &lt;a href="http://www.ubuntu.com"&gt;Ubuntu&lt;/a&gt; 7.04 released. Hoping to detail the upgrade/re-install on my Thinkpad, PowerBook G4 (no cdrom) and my iBook G3.&lt;br /&gt;&lt;br /&gt;I've now got 4 days to get all my data moved across to the NFS shares on the &lt;a href="http://www.nslu2-linux.org/"&gt;SLUG&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3594071261505311749-5364810440700656947?l=reversemidastouch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reversemidastouch.blogspot.com/feeds/5364810440700656947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3594071261505311749&amp;postID=5364810440700656947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5364810440700656947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3594071261505311749/posts/default/5364810440700656947'/><link rel='alternate' type='text/html' href='http://reversemidastouch.blogspot.com/2007/04/first-past-post.html' title='First past the post'/><author><name>tng</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
