Marc's Public Blog


All | Aquariums | Arduino | Btrfs | Cars | Cats | Clubbing | Dining | Diving | Electronics | Exercising | Flying | Hiking | Linux | Linuxha | Museums | Public | Rc | Sciencemuseums | Snow | Solar | Trips




More pages: July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 November 2015 October 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011 January 2011 December 2010 November 2010 October 2010 September 2010 August 2010 July 2010 June 2010 May 2010 April 2010 March 2010 February 2010 January 2010 December 2009 November 2009 October 2009 September 2009 August 2009 July 2009 June 2009 May 2009 April 2009 March 2009 February 2009 January 2009 December 2008 November 2008 October 2008 September 2008 August 2008 July 2008 June 2008 May 2008 April 2008 March 2008 February 2008 January 2008 December 2007 November 2007 October 2007 September 2007 August 2007 July 2007 June 2007 May 2007 April 2007 March 2007 February 2007 January 2007 December 2006 November 2006 October 2006 September 2006 August 2006 July 2006 June 2006 May 2006 April 2006 March 2006 February 2006 January 2006 December 2005 November 2005 October 2005 September 2005 August 2005 July 2005 June 2005 May 2005 April 2005 March 2005 February 2005 January 2005 December 2004 November 2004 October 2004 September 2004 August 2004 July 2004 June 2004 May 2004 April 2004 March 2004 February 2004 January 2004 October 2003 August 2003 July 2003 May 2003 April 2003 March 2003 January 2003 November 2002 October 2002 July 2002 May 2002 April 2002 March 2002 February 2002 November 2001 October 2001 September 2001 August 2001 July 2001 June 2001 May 2001 April 2001 March 2001 February 2001 January 2001 December 2000 November 2000 October 2000 September 2000 August 2000 July 2000 June 2000 April 1999 March 1999 September 1997 August 1997 July 1996 September 1993 July 1991 December 1988 December 1985 January 1980



2013/11/26 Diving Raja Ampat 11 days on Waow
π 2013-11-26 01:01 in Diving
I had been told about Raja Ampat many years ago now, but I hadn't looked into it seriously enough until now. It's a bunch of Islands that are part of Indonesia, but really are close to Papua New Guinea (the east side of the Island actually belongs to Indonesia, along with a share of the malaria mosquitoes). Raja Ampat is known to have pristine waters and apparently the biggest variety of fish in the world.

So, I made plans to go and it's it's booked well in advance, even 11 months early, the choices were already a bit limited and we ended up with the best and likely most expensive boat, WAOW. Quite frankly, this turned out great, the boat, crew, cabins, and amenities were fantastic, and it also turns out to be the only liveaboard so far to have satellite internet for all in the boat (apparently about 1Mbit/s).

Getting to the boat is a bitch though, you have to fly to Sorong, which is a small little airport which requires 2 flights from Bali or Jakarta, which in turn required two more flights from SFO, or 4 flights total. As a result (and to get business award tickets), we flew to Bali a few days early before doing the 2 extra flights to Sorong.

Since there are Malaria mosquitoes there, then the airport looked more like a bus terminal, and someone from the boat told us "whatever you do, make sure you do not have to go to the So Wrong (Sorong) hospital, trust me, you do not want to go there".
Given that, Jennifer and I had taken malarone against malaria just in case, and had long sleeves and pants in hot humid weather filled with anti mosquito spray. As a result, we were happy when the Waow staff picked us up quickly at the airport and had us on a boat towards the Waow in fewer than 30mn after we arrived. The boat soon after left Sorong for its 12 day voyage.

Here is where we went:



The Waow is a new wooden luxury sailboat that was built just a few years ago. While we didn't much wind during our trip, they still put the sails up one day because why the heck not :)


The staff was truly fantastic (and plentiful, they were around 25 or so, for barely 20 divers). The cabins were huge, we had an upgraded one and it wasn't even the biggest one:



Jennifer was very happy with the hammocks :)



As usual, I had my triple GPS logging setup to get the route and dive sites:


A few other pictures from the boat and divers







The dive guides were top notch (and so was the rest of the crew)
The dive guides were top notch (and so was the rest of the crew)

we got a few fresh fish deliveries :)
we got a few fresh fish deliveries :)

Oh, did I mention the boat even had a masseuse?

I also managed to get a coconut from land on one of our visits:

this is why I'm happy to have saw on my swiss army knife
this is why I'm happy to have saw on my swiss army knife

score!
score!

they also got some fresh green coconuts for us later
they also got some fresh green coconuts for us later

Before I finish with the diving pictures, we had several excursions during the cruise that were other than diving, and were a nice occasional change compared to just diving 4 times a day every day for 11 days. Here are some pictures from them.

  • One morning, we went to see some beautiful small islands:




  • Another day, we went to an island for a arduous climb to the top, great views, and a picnic on the beach after that:











  • Another day, we got to visit one of the best pearl farms in the world (the water in Raja Ampat being so clean, apparently yields better pearls):


  • we got to see how a pearl gets extracted
    we got to see how a pearl gets extracted


  • Another day, another island visit:


  • we climbed to the top too
    we climbed to the top too

    yes, top of the world, Arturo :)
    yes, top of the world, Arturo :)

  • And around the end, we went to a great cave you could snorkel through, and get out the other side, by briefly swimming under water:

  • we picked up an escort from a local village to make sure we wouldn't steal fish or pearls (and pay a fee)
    we picked up an escort from a local village to make sure we wouldn't steal fish or pearls (and pay a fee)




    cave birds built nests in there
    cave birds built nests in there



    the local tribe buries their deads in caves by the water
    the local tribe buries their deads in caves by the water

    our divemasters were zen :)
    our divemasters were zen :)

    Ok, but those were many non diving related pictures, so let's go to diving now:

    Thanks to Arturo for this one
    Thanks to Arturo for this one

  • Day #1 started very well, 4 dives including a night dive, and some very good stuff already:










  • Day #2 was only 2 dives since we had a lot of motoring in the afternoon to get to the next sites:

  • Day 3 was a 4 dive day, including a fantastic night dive where we got to see many critters, from sharks, to crocodile fish, Flamboyant Cuttlefish walking on the ground (fantastic, had never seen those before), and much more. Very very nice.
  • Since the pictures were taken with a crappy panasonic point and shoot, even with crappy gear, I got lucky once in a while :)











  • Day 4: nice variety of fishes:










  • Day 5 was pretty epic, I got my first pygmy seahorse pictures, which is no small feat with my camera, more crocodile fish, batfish, giant head parrotfish including one shitting sand, and much more. The walls of fish, and soft coral are still very nice too:






  • this is where sand comes from :)
    this is where sand comes from :)














  • Day 6: Got some great clown triggerfish shots, I love those things, and another pygmy seahorse:











  • Day 7: Got another really nice red and blue pygmy seahorse amongst other things:










  • Day #8, we only had two dives due to some other activies in the afternoon. One of the 2 dives was fantastic, orang-outang crab, puffers of multiple colors, big lobsters, pygmy seahorse, and more:












  • Day 9: I elected to only do the 3 day dives and skip the night one due to a cold, and I still got to see good stuff, including big manta rays getting cleaned, several big bunches of fish, and giant clams. I love the pissed off clown fish too :)












  • Day 10 was the last day diving in Raja Ampat: 2 dives in the morning (to allow for flights the next day). By the 2nd dive, my ear really didn't want to equalize anymore, so it was a good thing that we were done. I still got to see good stuff though, especially on the first dive, we got to see a giant manta (too far to picture), I saw my first manta shrimp, and we even got a super zen cuttlefish (pictures aren't great, it's a very twitchy thing) that just stayed in the same place for everyone to take as many pictures as desired:










  • And that was it, 11 days, 32 dives, many of which good or great. It was tough, but someone had to do it :)

    A big thanks to the crew who was fantastic with us.

    See more images for Diving Raja Ampat 11 days on Waow
    2013/11/26 Trip to Raja Ampat to go Diving
    π 2013-11-26 01:01 in Indonesia2013, Trips
    I have many pictures of Diving in Raja Ampat on the Waow.

    While you should go to that page for more details, I'll put a few pictures here:










    For more many pictures of Diving in Raja Ampat on the Waow, go here.

    See more images for Trip to Raja Ampat to go Diving
    2013/11/24 Indonesia: Bali, Day 5
    π 2013-11-24 01:01 in Indonesia2013, Trips
    Our last day in Bali was really just the morning to burn before going to the airport for a couple of flights to Sorong (via Makassar) to reach Raja Ampat, our ulimate diving destination.

    A few more pictures of our resort, Ubud by Como, on the way out:




    We got up early to visit the Bali Zoo and Saphari Park. Lack of planning and knowledge (and them having a useless website), caused us not to know they had private safari tours in a jeep for 2 where you could hand feed the animals. That would clearly have been the highlight of the visit. Instead, we got the normal group safari tour, which was still good to see animals there.
    We didn't sign up in time for an elephant ride that would meet the time we had to leave by, but we got the camel ride instead, which wasn't bad :)










    the private jeep we should have been in :)
    the private jeep we should have been in :)



    We went to visit the tigers:


    just like our cat, but a tiny bit bigger :)
    just like our cat, but a tiny bit bigger :)

    either it was very tired, a bit too drugged up...
    either it was very tired, a bit too drugged up...

    but eh, it was hard to pass on :)
    but eh, it was hard to pass on :)

    grooming, just like our cat
    grooming, just like our cat

    Time for our camel ride:





    Even if we didn't get to ride one, we did get to feed some elephants before their bath. Their trunk is very very good at probing and tickling you everywhere until you hand out the food :)




    Then was time for the elephant show, this zoo's main feature:







    Last but not least, we had a quick look at the rest of the place before heading out:







    After the Zoo, Tawan drove us towards the airport, but since we had a bit of time left over, we had lunch by the beach, where we hadn't spent any time so far :)




    some good shrimp before the flight did the trick
    some good shrimp before the flight did the trick

    And that was it, the end of our trip in Bali. Next were the flights towards Sorong (via Makassar) to reach Raja Ampat, our ulimate diving destination.

    See more images for Indonesia: Bali, Day 5
    2013/11/23 Indonesia: Bali, Day 4
    π 2013-11-23 01:01 in Indonesia2013, Trips
    We started with another great breakfast and since we had a bit of spare time in the morning, we spent it to enjoy the resort:


    the lizards were having breakfast too :)
    the lizards were having breakfast too :)

    the staff kept the ground meticulously
    the staff kept the ground meticulously

    This is not what I usually do, but we had some spare time in the morning :)
    This is not what I usually do, but we had some spare time in the morning :)


    We then started our day with the bird park, which I figured would be fun. I was indeed right, on top of having unusual birds, they had some you could interact with (including the big blue parrot that came down from its perch slowly and calmly to bite my finger pretty hard, stupid parrot).


    they showed us how cocks fight. Mmmh, ok
    they showed us how cocks fight. Mmmh, ok


    this one was super friendly and literally asked me to scratch under its feathers :)
    this one was super friendly and literally asked me to scratch under its feathers :)

    the big one bit me later when I came to say hello without its handler
    the big one bit me later when I came to say hello without its handler





    this little guy wanted to clean our ears :)
    this little guy wanted to clean our ears :)

    I kept it with me and it spent its time cleaning my ear
    I kept it with me and it spent its time cleaning my ear


    Next door, they had reptiles, we had a quick look:





    Our next plan was to have suckling pig, a local specialty. Yummy piggy was had :)




    Next, we got to visit places that had art for sale: wood carvings and paintings:




    art indeed
    art indeed




    To finish the day, we went to Tanah Lot to see the fesh water source in the middle of the ocean, the temple that hosts it, and the surroundings. Once is supposed to see the sunset there, but it was an utter clusterfsck of people due to a special gathering of motorcrossers that day, as well the regular tourists. It took us almost 45mn just to get out of the parking lot before sunset, never mind what it would have been later... (yeah, we missed sunset, but we were going to be 10 days on a boat, so we'd get many more):






    at the lowest tide, you can walk to the fresh water island
    at the lowest tide, you can walk to the fresh water island


    fresh water comes out of the small island
    fresh water comes out of the small island

    they have a secret snake in a cave you're supposed to pet (for a tip)
    they have a secret snake in a cave you're supposed to pet (for a tip)

    they have a secret snake in a cave you're supposed to pet (for a tip)
    they have a secret snake in a cave you're supposed to pet (for a tip)



    After a long drive back to Ubud (which would have been twice as long, if not more, had we waited for sunset), we got an evening reflexology massage, which did include some severe foot plant manipulations to stimulate nerve endings


    We're still wondering how much we really got for the painful foot manipulations :)

    And that was the end of our 4th Day in Bali.

    See more images for Indonesia: Bali, Day 4
    2013/11/22 Indonesia: Bali, Day 3
    π 2013-11-22 01:01 in Indonesia2013, Trips
    We got to enjoy the pool and views by the resort in the morning:


    breakfast location
    breakfast location



    Tawan then took us out for a drive:

    lots of rice fields
    lots of rice fields

    people drying their rice on the side of the road...
    people drying their rice on the side of the road...





    We went to Gunung Kawi. On the way down to a temple, lots of stores:








    Next door was Tirtha Empul Temple:




    offerings
    offerings







    Next, we went to a Volcano Rim, but unfortunately the weather and visibility were poor, so the view was not that great and we ended up not going to the hot springs that were down there, but we still had lunch at the view restaurant that was right there, and the buffet was tasty and quite cheap:




    Later on the road, we went fruit hunting for Jennifer :)



    We finally found the smelly Durion fruit
    We finally found the smelly Durion fruit


    On the way back, we went to Penglipuran temple and its street of traditional houses for tourists to see:









    Last, but not least, the elephant cave and its surroundings:




    On the road, we saw a flock of ducks used to 'clean' a rice field :)


    See more images for Indonesia: Bali, Day 3
    2013/11/21 Indonesia: Bali, Day 2
    π 2013-11-21 01:01 in Indonesia2013, Trips
    We enjoyed the views from our beach hotel in the morning (Puri Satrian) before heading out. It's a beach resort hotel, which wasn't really what we're about, but we still had a look around:










    Next, Tawan, our guide, came to pick us up. He drove us around Denpasar in the morning and took us to the Bajra Sandhi Monument:








    Next, he took us to the near island where we booked our dolphin experience with Bali Dolphin Interaction (beware, there is another one, and apparently it's not as good). Driving around was "interesting", you got to see all kinds of things:



    Eventually, we got there. Before I put more pictures, I'll answer the "isn't this mean to inhumane to the dolphins" part. I'm not an expert, but while their enclosures didn't look super big, they were in the ocean (i.e. real water), they are allowed to go swim with one another after their work hours (bite marks and scratches they do to one another confirmed that), and allegedly, they're let out to swim in the ocean on sundays, but they come back for the easy food and the routine they're used to. While I'm not sure if I could believe that, cats and dogs do that happily and come back for food and companionship, so maybe it's possible for dolphins too, at least I hope so.
    All that being said, we were split up in groups and had one dolphin to play with for each group. The dolphin is obviously trained to do tricks, but just like a dog that likes go fetch a ball, apparently our dolphin was more than happy to do some of the tricks and bring us back a ball too:










    Once our dolphin fun was over, Tawan took us to a place that sells Luwak Coffee, the most expensive coffee in the world, where individual beans are eaten and pooped half digested by a local animal (Luwak). Apparently, it makes coffee better (I wouldn't know because I hate coffee :) ):


    Luwak, the choosy animal
    Luwak, the choosy animal




    Next, we went to the monkey forest, which is both a nice temple, and lost of wild monkeys, which you're not supposed to feed since if they bite you, you can get rabbies, but you can pay a local to feed them for you and make them climb on you:




    some tourists fed the monkeys directly, but it wasn't a grand idea. Some do end up bitten.
    some tourists fed the monkeys directly, but it wasn't a grand idea. Some do end up bitten.

    just what you're not supposed to do
    just what you're not supposed to do

    we paid a handler to get the monkey to climb on us without risking our hands :)
    we paid a handler to get the monkey to climb on us without risking our hands :)

    the forest was quite nice too
    the forest was quite nice too




    We ended by having dinner close to our new hotel in Ubud, at Indus, with a great view and good food:






    See more images for Indonesia: Bali, Day 2
    2013/11/20 Indonesia: Bali, Day 1
    π 2013-11-20 01:01 in Indonesia2013, Trips

    We arrived in pretty good rain, which only got worse over time for the rest of the day


    Everyone seemed to have a tour or a guide waiting for them, we did too
    Everyone seemed to have a tour or a guide waiting for them, we did too

    Our guide took us for an evening at the Zoo where we had dinner, saw an animal show, and got to visit the Zoo at night with a flashlight (not forgetting getting to feed an elephant):




    bearcat
    bearcat


    After the visit, we got a drum and dance, and fire dancing show:



    and that was it for the evening, despite the great flight, we were beat and jetlagged.

    See more images for Indonesia: Bali, Day 1
    2013/11/19 Trip to Indonesia for visiting and Diving
    π 2013-11-19 01:01 in Indonesia2013, Trips
    Jennifer and I had planned to go to Raja Ampat, which is in the middle of nowhere, Indonesia, and probably also why it's so pristine and filled with aquatic life.

    To get there, a good option was to go through Bali, and since we used award flights (free flight in business using the stack of United miles I had gathered), we had to arrive in Bali 4 days before our connection to the next towns on the way to the boat.

    After a quick online search, and asking some friends, I quickly figured out that spending 4 days in Bali wasn't the worst thing in the world, so that's what we did.

    The flight from SFO to Bali (via Taiwan) with EVA Air was really good. Made flying as much of a breeze as it can be:


    seabass was on the special order in advance menu, quite tasty
    seabass was on the special order in advance menu, quite tasty

    met the definition of lie flat :)
    met the definition of lie flat :)

    Taipei has a very nice airport
    Taipei has a very nice airport

    The EVA Business Lounge was quite nice too, even had ice cream :)
    The EVA Business Lounge was quite nice too, even had ice cream :)


    2nd and last flight to reach Bali
    2nd and last flight to reach Bali

    After the last flight, we arrived in Bali in pourring rain, to be greated by our guide, see next post.

    2013/11/16 Mythtv + Denon-AVR-3808CI 2 Way Communication
    π 2013-11-16 01:01 in Linux, Linuxha
    Recent Denon AV Receivers, like at least the 3806, 3807, 3808, 3809, 3810, 3811, 3812, 3813, as well as 4806, 4807, 4808, 4809, 4810, 4811, 4812, 4813 have a TCP/IP connection you can use to control the receiver via telnet.

    But the important thing is that the telnet connection 2-way, so it will also tell you whathe receiver is doing. I use this to know when the receiver turns on or off, and more importantly when it tunes into my mythtv input. When that happens, I have my controlling PC (the one that's always on) know that the AV receiver switched to mythtv, and it will send a wake on lan (WOL) packet to my mythtv to wake it up from S3 sleep, as well as restart X because for my video card X doesn't resume properly over HDMI.

    At the same time, as explained in an earlier post on how to mute and change volume on a Denon receiver using a mythtv remote, I already have my mythtv send commands to my Denon AV receiver to change the volume or mute it.

    Given the above, I now had the problem that both my hacks didn't work at the same time because denon receivers only accept one telnet connection. Thankfully the connection is 2-way, but you need the code that can receive status from it independently from writing to the telnet socket.

    So, I found denon.pl from bradfitz and quickly adapted my code into it. My new code reads commands from a FIFO and passes them on ot the socket. With my diffs, it's not super pretty code, but I stopped caring when it worked :)

    So now, I have my denon to trigger a WOL packet to wake up my mythtv PC from S3 ACPI sleep when it's selected in the receiver.
    In turn, when my denon is told to sleep, my code receives the state change over the telnet connection and my controlling PC uses the info to make mythfrontend exist back to mythwelcome, which in turn will cause the mythtv to go to S3 sleep if it's not doing anything else.
    This can all be done by only reading from the telnet connection (which I used to do), but now I also use mythtv to control the sound on the receiver and this is done by sending commands asynchronously from the status updates being received.

    This is how the mute script works:

     
    #!/bin/bash

    FILE=/tmp/denonmute

    test -f $FILE || touch $FILE

    # prevent bounces [ $(( $(date "+%s") - $(stat -c "%Z" $FILE) )) -lt 2 ] && exit

    if grep -q MUON $FILE 2>/dev/null; then CMD=MUOFF else CMD=MUON fi

    # Used to be: #echo -ne "$CMD\r" | nc -q0 denon 23 #echo $CMD > $FILE

    echo $CMD | tee $FILE > /var/run/denon.fifo

    Here is the code that interacts with my Denon AVR:

  • denon
  • denoncmd
  • denonmute
  • On the mythtv side, these are some of my scripts:

  • myth_can_shutdown
  •  
    #!/bin/bash

    # See http://www.mythtv.org/wiki/ACPI_Wakeup # Time wakeup format was hh:mm yyyy-MM-dd and changed to time_t

    DATE=$(date "+%Y:%m:%d-%H:%M:%S") LOG=/var/log/mythtv/myth_acpi

    exec >>$LOG exec 2>>$LOG

    # This will shutdown if I pause too long without turning off denon. #for mplayer in $(pgrep mplayer) #do # # See if mplayer is currently playing. # before=$(grep pos /proc/$mplayer/fdinfo/*) # sleep 2 # after=$(grep pos /proc/$mplayer/fdinfo/*) # # if [ "$before" != "$after" ]; then # echo "$DATE: $0 found running mplayer, cancel sleep" # ps auxww |grep "[ ]$mplayer" # exit 1 # fi #done

    # mplayer is killed in myth_frontend_shutdown. if pgrep mplayer; then echo "$DATE: $0 found mplayer, cancel sleep" ps auxww |grep "[mM]player" exit 1 fi

    if pgrep xbmc.bin >/dev/null; then echo "$DATE: $0 xbmc running, cancel sleep" exit 1 fi

    if who | grep -qv mythtv; then echo "$DATE: $0 root logged in, cancel sleep" who exit 1 fi

    echo "$DATE: $0 called, and nothing blocking shutdown"

  • myth-fmr_wol
  •  
    #!/bin/bash

    etherwake -i eth1 00:22:15:8c:66:e9 etherwake -i wlan0 00:22:15:8c:66:e9 &>/dev/null

  • myth_frontend_shutdown is the script 'denon' calls via telnet to shut down mythfrontend/xmbc/mplayer and let the machine go to S3 sleep
  •  
    #!/bin/bash LOG=/var/log/mythtv/myth_acpi exec >>$LOG exec 2>>$LOG

    if pgrep xbmc.bin >/dev/null; then echo "$(date "+%Y:%m:%d-%H:%M"): Asking XBMC to shut down" /var/local/scr/alarm 5 wget --quiet -O /dev/null 'http://localhost:8080/xbmcCmds/xbmcHttp?command=exit' sleep 5 ps auxww | grep '[xX]bmc' if pgrep xbmc.bin || pgrep xmbc; then echo "$(date "+%Y:%m:%d-%H:%M"): XBMC DID NOT DIE, FORCIBLY KILLING." killall xbmc.bin xbmc sleep 1 killall -9 xbmc.bin xbmc fi fi

    # stop mplayer so that myth_can_shutdown can detect and shutdown. killall mplayer

    # killing xbmc can restart mythfrontend. sleep 1

    if pgrep -f mythfrontend.real >/dev/null; then echo "$(date "+%Y:%m:%d-%H:%M"): Asking mythfrontend pid $(pgrep -f mythfrontend.real) to shut down" # http://www.mythtv.org/wiki/Keybindings #for key in space f1 escape escape down enter #do #nc -q0 localhost 6546 <<< "key $key" #sleep 1 #done for cmd in 'jump mainmenu' 'key escape' 'key down' 'key enter' do echo "sending $cmd" nc -q0 localhost 6546 <<< "$cmd" sleep 1 done # Key enter takes a long time to exit mythfrontend. sleep 10 if pgrep -f mythfrontend.real; then echo "$(date "+%Y:%m:%d-%H:%M"): MYTHFRONTEND DID NOT DIE, FORCIBLY KILLING." /usr/bin/killall mythfrontend.real sleep 1 /usr/bin/killall -9 mythfrontend.real else echo "$(date "+%Y:%m:%d-%H:%M"): mythfrontend has shut down." fi fi

  • myth_reset_xorg is the other script 'denon' calls via telnet to restart X and mythwelcome after S3 sleep restore. This is necessary on my system because X doesn't always come back ok from sleep.
  •  
    #!/bin/bash

    export PATH=/var/local/scr:$PATH

    while : do # I shouldn't have to kill mythfrontend because it shouldn't be running # but this is just for completeness. # I have also had one case like below where I had to kill Xorg. # |-login(6160)---startx(6184,mythtv)---xinit(6307)-+-Xorg(6308,root) # | `-xinit(6318) killall mythwelcome xinit mythfrontend.real mythfrontend Xorg

    sleep 6 X_TTY=$(ps auxww | grep '/usr/bin/[X]' | sed -e "s/.* tty//" -e "s/[^0-9].*//")

    /var/local/scr/alarm 3 sudo chvt 2 sleep 1 /var/local/scr/alarm 3 sudo chvt $X_TTY

    sleep 2 # This doesn't actually check that X is talking to a screen, it works # when waking up from RTC and no screen is connected :( #if grep 'intel(0): EDID vendor "DON"' /var/log/Xorg.0.log; then if grep 'Resuming AIGLX clients after VT switch' /var/log/Xorg.0.log; then echo "X seems be running and displaying" break else echo ">>>>>>>>>>>> X isn't displaying, trying restart loop <<<<<<<<<<<<<<<<" fi done

    For indexing purposes, here is a snapshot of the main denon code

     
    #!/usr/bin/perl

    # Originally from bradfitz (denon.pl on github).

    use strict; use IO::Socket::INET; use Time::HiRes qw (sleep); use POSIX qw(mkfifo); use Carp qw(croak); use FileHandle;

    my $host = "denon"; my $fifo = "/var/run/denon.fifo"; my $port = 23;

    STDOUT->autoflush(1); STDERR->autoflush(1);

    ("\xff\xfd\x03" eq fromhex("ff fd", " 03 ")) or die "Unittest failed";

    # ----------------

    my $sock = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port) or die "Failed to connect to $host:$port";

    sub expect_from_denon { my $expected = shift; my $got = ""; my $buf; print "Waiting on ", printable($expected), "..."; while (length($got) < length($expected) && sysread($sock, $buf, length($expected) - length($got))) { $got .= $buf; } croak "Didn't get expected input." unless $got eq $expected; print "Got it.\n"; return 1; }

    sub fromhex { my $in = join(', @_); $in =~ s/\s*(..)\s*/chr(hex($1))/eg; return $in; }

    sub send_to_denon { my $str = shift; syswrite($sock, $str) = length($str) or die; # We don't sync with the reader, but blind sleep for each line sent. sleep 0.2; }

    sub printable { my $str = shift; $str =~ s/[^[:print:]]/sprintf("x%02x", ord($&))/eg; return $str; }

    sub turn_off_myth { # for key in 'key space' 'jump mainmenu' 'key escape' 'key down' 'key enter'; do # echo "$key" | nc myth 6546; echo "$key"; sleep 3; done system("date; /var/local/scr/alarm 10 telnet myth 10221; date"); }

    sub wakeup_activate_myth { if (not system("fping -c3 -p1 -q myth")) { print "myth is already up, toggle X screen to wake X up\n"; system("date; /var/local/scr/alarm 20 telnet myth 10222; date"); } else { # If we start myth too quickly and the display isn't ready, it becomes # unable to talk to it until it goes through another suspend/resume. # Mmmh, actually it doesn't look like sleeping here is useful. but let's sleep 1; print "myth is down, wake it up and restart X\n"; # 5 Seconds is a bit aggressive for the machine to wake up and # be ready to flip Xorg, but it seems to work. system("date; sudo /var/local/scr/myth-fmr_wol; fping -r 5 myth && date && " "echo 'sleep 5 wait for X to restart safely' && sleep 5 && /var/local/scr/alarm 20 telnet myth 10222; date"); } }

    sub printlog { my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); my $mesg = $_[0]; $year+=1900; $mon++;

    chomp($mesg); printf LOG ("%.4d/%.2d/%.2d %.2d:%.2d:%.2d - $mesg\n", $year, $mon, $mday, $hour, $min, $sec); }

    # --------------------------------------------------------------------------------

    my $hello = fromhex("ff fd 03", # Do Suppress Go ahead "ff fb 18", # Will Terminal Type "ff fb 1f", # Will Negotiate About Window Size "ff fb 20", # Will Terminal Speed "ff fb 21", # Will Remote Flow Control "ff fb 22", # Will Linemode "ff fb 27", # Will New Environment Option "ff fd 05", # Do Status );

    send_to_denon($hello);

    expect_from_denon(fromhex("ff fb 03")); # Will Suppress Go Ahead expect_from_denon(fromhex("ff fa 18 01 ff f0")); # Send your terminal type

    print "send terminal.\n"; send_to_denon(fromhex("ff fa 18 00", "rxvt", "ff f0", # suboption end ));

    expect_from_denon("BridgeCo AG Telnet server\x0a\x0d");

    my $child = fork; defined($child) or die "Fork failure.";

    if ($child) # we're the parent process. accept input. { if ($#ARGV eq -1) { while (1) { print "DENON> "; my $line = <STDIN>; chomp $line; next if (!$line); exit if ($line eq "quit" or $line eq "q" or $line eq "exit"); send_to_denon($line . "\x0d"); } } elsif ($#ARGV eq 0) { my $arg = $ARGV[0];

    if ($arg eq "--server") { -p $fifo or mkfifo($fifo, 0700) or die "mkfifo($fifo) failed: $!";

    print "Will read from fifo $fifo until ^C\n"; my $logfile = "/var/log/denon-send.log"; open(LOG, ">>$logfile") or die "Can't write to $logfile"; LOG->autoflush(1);

    open(FIFO, "<$fifo") or die "Can't read from $fifo: $!"; while (1) { sleep 0.1; my $arg = <FIFO>; next if (not $arg);

    chomp $arg; printlog("sending $arg"); send_to_denon($arg . "\x0d"); } } else { print "Will send $arg to $host\n"; send_to_denon($arg . "\x0d"); } } elsif ($#ARGV eq 1) { my ($arg, $repeat) = @ARGV; print "Will send $arg to $host $repeat times\n"; foreach $_ (1 .. $repeat) { send_to_denon($ARGV[0] . "\x0d"); } } else { die "Too many args: ".join(" ", @ARGV); } } else # Child process, { my $logfile = "/var/log/denon.log"; open(LOG, ">>$logfile") or die "Can't write to $logfile"; LOG->autoflush(1);

    # Init state machine for keeping track of whether receiver is on or off # and on which output. By default, we'll pretend the last output was DVR my $input = "SIDVR";

    # Sometimes, the connection to denon dies when denon starts up. # When this happens, we missed the first PWON, so we assume that # we're at stage one already (first PWON seen) when we start. my $denon_state = "on_stage1";

    # Turning back on to mythtv when it was off, we need to wait for the 2nd PWON # 2011/11/09 05:50:17 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:50:17 - PWON # 2011/11/09 05:50:17 - ZMON # 2011/11/09 05:50:20 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:50:21 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:50:24 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:50:24 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:50:25 - PSROOM EQ:AUDYSSEY # look for 2nd PWON vvvvvvvv # 2011/11/09 05:50:25 - PWON # 2011/11/09 05:50:42 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:50:44 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:50:44 - PSROOM EQ:AUDYSSEY # # Turning on when mythtv was the last input to DVD # 2011/11/09 05:48:22 - ZMOFF # 2011/11/09 05:48:38 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:48:38 - PWON # 2011/11/09 05:48:39 - ZMON # 2011/11/09 05:48:41 - PSROOM EQ:AUDYSSEY # 2011/11/09 05:48:43 - SIDVD # 2011/11/09 05:48:43 - Denon switched input to SIDVD # 2011/11/09 05:48:43 - SDHDMI # 2011/11/09 05:48:43 - SVSAT # 2011/11/09 05:48:43 - DCAUTO # 2011/11/09 05:48:43 - CVFL 495 # 2011/11/09 05:48:43 - CVFR 505 # 2011/11/09 05:48:43 - CVC 495 # 2011/11/09 05:48:43 - CVSW 52 # 2011/11/09 05:48:43 - CVSL 495 # 2011/11/09 05:48:43 - CVSR 52 # 2011/11/09 05:48:43 - CVSBL 50 # 2011/11/09 05:48:43 - CVSBR 50 # 2011/11/09 05:48:43 - CVSB 50 # 2011/11/09 05:48:43 - MVMAX 98 # 2011/11/09 05:48:43 - PSROOM EQ:AUDYSSEY # look for 2nd PWON vvvvvvvv # 2011/11/09 05:48:47 - PWON # 2011/11/09 05:49:19 - SIDVR # 2011/11/09 05:49:19 - SDAUTO # 2011/11/09 05:49:19 - SVDVR # 2011/11/09 05:49:19 - DCAUTO

    # Show any read data, and depending on some commands read, wake up # or put mythtv to sleep. my $data; while (sysread($sock, $data, 300)) { $data =~ s/\015/\n/g; foreach my $line (split(/\n/, $data)) { printlog("Read: ".printable($line));

    if ($line =~ /SIDVR/) { printlog("Denon switched to MythTV (denon state $denon_state), waking up myth"); wakeup_activate_myth(); $input = $line; } elsif ($line =~ /^SI/) { printlog("Denon switched input to $line"); $input = $line; if ($denon_state eq "on") { printlog("Denon on (state $denon_state), but switched to $input. Turn off mythtv"); turn_off_myth(); } } elsif ($line =~ /PWON/) { if ($denon_state eq "off") { $denon_state = "on_stage1"; printlog("Denon being turned on, switching to stage1 on"); # Between now and the second 'ON', we'll have gotten a new # input line if input got switched at power on, or we use # the last one we've seen in the past. } else { printlog("Got another PWON (was $denon_state)"); $denon_state = "on"; if ($input =~ /SIDVR/) { printlog("Denon turned on and was last on MythTV, waking up myth"); wakeup_activate_myth(); } else { printlog("Denon turned on but input is $input, doing nothing"); } } } elsif ($line =~ /PWSTANDBY/) { $denon_state = "off"; if ($input =~ /SIDVR/) { printlog("Denon turned off and was last on MythTV, turning off"); turn_off_myth(); } else { printlog("Denon turned off but last input was $input, not doing anything"); } } } } }

    sub END { #print "Killing child\n"; kill(9, $child); }

    exit; ___END___ #!/bin/bash

    # $0 cmd [repeat]

    for i in `seq 1 ${2-1}` do echo -ne "$1\r" | nc -q0 denon 23 sleep 0.2 done

    exit

    PWON", "xon" PWSTANDBY PW?", "power-status" MVUP", "volplus" MVDOWN", "volminus" MV62", "vol-18" MV80", "vol+0" MV98", "vol+18" MUON", "mute-on" MUOFF", "mute-off" SIPHONO", "input-phono" SICD", "input-cd" SITUNER", "input-tuner" SIDVD", "input-dvd" SIVDP", "input-vdp" SITV", "input-tv" SIDBS", "input-dbs" SIVCR-1", "input-vcr1" SIVCR-2", "input-vcr2" SIV.AUX", "input-vaux" SICDR/TAPE", "input-cdr" SI?", "input-status" SDAUTO", "digital-in-auto" SDPCM", "digital-in-pcm" SDDTS", "digital-in-dts" SDANALOG", "digital-in-analog" SDEXT.IN-1", "digital-in-ext-in" SVDVD", "video-select-dvd" SVVDP", "video-select-vdp" SVTV", "video-select-tv" SVDBS", "video-select-dbs" SVVCR-1", "video-select-vcr1" SVVCR-2", "video-select-vcr2" SVV.AUX", "video-select-vaux" SVSOURCE", "video-select-source" MSDIRECT", "surround-mode-direct" MSPURE DIRECT", "surround-mode-pure-direct" MSSTEREO", "surround-mode-stereo" MSMULTI CH IN", "surround-mode-multi-ch-in" MSMULTI CH DIRECT", "surround-mode-multi-ch-direct" MSMULTI CH PURE D", "surround-mode-multi-ch-pure-direct" MSDOLBY PRO LOGIC", "surround-mode-dolby-pro-logic" MSDOLBY PL2", "surround-mode-dolby-pl2" MSDOLBY PL2x", "surround-mode-dolby-pl2x" MSDOLBY DIGITAL", "surround-mode-dolby-digital" MSDOLBY D EX", "surround-mode-dolby-d-ex" MSDTS NEO:6", "surround-mode-dts-neo6" MSDTS SURROUND", "surround-mode-dts-surround" MSDTS ES DSCRT6.1", "surround-mode-dts-es-dscrt61" MSDTS ES MTRX6.1", "surround-mode-dts-es-mtrx61" MSWIDE SCREEN", "surround-mode-wide-screen" MS5CH STEREO", "surround-mode-5ch-stereo" MS7CH STEREO", "surround-mode-7ch-stereo" MSSUPER STADIUM", "surround-mode-super-stadium" MSROCK ARENA", "surround-mode-rock-arena" MSJAZZ CLUB", "surround-mode-jazz-club" MSCLASSIC CONCERT", "surround-mode-classic-concert" MSMONO MOVIE", "surround-mode-mono-movie" MSMATRIX", "surround-mode-matrix" MSVIDEO GAME", "surround-mode-video-game" MSVIRTUAL", "surround-mode-virtual" MS?", "surround-mode-status" MSUSER1", "surround-mode-user1" MSUSER2", "surround-mode-user2" MSUSER3", "surround-mode-user3" SSCUP", "cursor-up" SSCDN", "cursor-down" SSCLT", "cursor-left" SSCRT", "cursor-right" SSENT", "cursor-enter" SSMEN ON", "system-setup-menu-on" SSMEN OFF", "system-setup-menu-off" PSMEN ON", "surround-parameter-menu-on" PSMEN OFF", "surround-parameter-menu-off"

    2013/11/15 Private Track Day at Thunderhill
    π 2013-11-15 01:01 in Cars
    Ari was nice enough to invite me to his track day, and although I was very excited about going, I fell sick a few days ealier, talk about timing :(
    At the same time, Nico, expert racer and instructor whom I had met at the Audi experience and had started giving me instruction I needed, was actually free that day and able to meet me at Thunderhill.
    Ok, long story short, I tried to rest as much as possible, and figured I'd show up and hope for the best.

    I got a good 8 hours of sleep, and flew to TH while my friend Scott nicely drove my car and met me there. I only had a slower plane that day, so I had to leave a bit ealier. This was close enough to a night takeoff:




    Unfortunately, I was still kind of sick that day when I arrived, but adrenaline and caffeine set that aside for most of the day, although by 15:00, my last session, I was fading. But man, I had had 6 great 35mn sessions by then.



    Alessandro came with his "company car"


    Alessandro
    Alessandro

    with Nico, my coach
    with Nico, my coach




    By noon, my outside rear tire had a bit too much fun, but thankfully I had shipped an old set of tires at the local tire shop and they were able to replace it during lunchtime, so I was able to run the afternoon:


    Man 35mn session are a lot of work, never mind when you're battling a cold (we only had about 10-15 mn between each session after refilling gas). By some miracle I was able to stay sharp most of the day and learn from Nico. He did a great job finding what I was doing wrong, and teaching me his fast in fast out line :)
    Nico was not my first coach, but he definitely was the most efficient so far.

    By the end of the day, I had run a few 2:02's, my best time so far, and that was on worn tires, and with a heavy wind that was blowing into my airbrake. I'm pretty sure on a good day with fresh tires and a fresh me, that means I can now get in the 2:00 range. I'm eager to try that out some future day.
    Thanks much to Nico for his expert help.

    On the way back, I did a quick overlfy of Thunderhill West:






    And then I flew back, which was no piece of cake because by then the adrenaline wore off, and my body let me know that what I did to it was mean :)





    This was definitely one of my best days at Thunderhill so far. Thanks again Ari.

    See more images for Private Track Day at Thunderhill
    2013/11/10 Smithsonian Air and Space Museum Udvar-Hazy by Washington Dulles Airport
    π 2013-11-10 01:01 in Flying
    This is the companion museum to the Smithsonian Air and Space Museum in downtown Washington DC. I saw companion, but it's a humongous hangar attached to IAD airport, and it contains the huge unique collection of air and space vehicles they have that would never fit in the original museum (also being just next to the runway makes getting a space shuttle or a concorde in, a lot easier).

    We showed up at 10:30, a little late (opens at 10:00) because we spent more time than expected visiting the Cathedral in Washington, and we arrived just in time for a volunteer led tour that was absolutely fantastic. He spent 3h45 with us to show us just a portion of their amazing collection, and he really knew space stuff since he worked at NASA before retiring.


    We started with a collection of very early planes, including one before the Wright Flyers' which never managed to fly: the Langley Aerodrome A.


    look at this plane. It never flew but sure looked cool.
    look at this plane. It never flew but sure looked cool.



    gunner station, bad ass!
    gunner station, bad ass!

    4 rudders!
    4 rudders!

    many early French planes
    many early French planes





    Then, we went to see other pieces of the collection:


    Enola Gay was the superfortress that dropped the atom bomb on Hiroshima
    Enola Gay was the superfortress that dropped the atom bomb on Hiroshima


    They also had rare Japanese and German planes:




    dual prop plane with pusher prop
    dual prop plane with pusher prop


    A japanese cruise missile that was actually piloted by a kamikaze
    A japanese cruise missile that was actually piloted by a kamikaze

    Messerschmitt Komet plane with a propellor to run a generator
    Messerschmitt Komet plane with a propellor to run a generator

    Finally we went to the space hangar and our volunteer talked to us about the space shuttle. They have discovery, the last one that flew.




    The tracking and data relay satellite that allowed coms with the space shuttle
    The tracking and data relay satellite that allowed coms with the space shuttle







    And we looked at more space artifacts and satellites

    Vega Solar System Probe
    Vega Solar System Probe

    Mercury Capsule
    Mercury Capsule

    A concept of gliding wing to land capsules on ground instead of sea
    A concept of gliding wing to land capsules on ground instead of sea


    That was a whole 3H45. By then, our guide parted ways with us, with many thanks for his excellent tour. Next, I went to check out the missile and rocket section:






    an early drone (KD2C-2 Skeet Target)
    an early drone (KD2C-2 Skeet Target)


    OMG, this looks weird
    OMG, this looks weird


    And more things, still, the main hangar is huge:














    An F35 with its engine, very cool
    An F35 with its engine, very cool



    but wait, there's more...
    but wait, there's more...










    I also went to the watch tower where you can see planes landing at IAD:





    And that was it. Many pictures on this page, but only a small sample of the 500+ pictures I took there. I barely got to see everything in a day, and quite frankly to visit carefully, you really need 2 days.
    This place is one of a kind, it totally deserves a stop in IAD when you're flying by washington, it's that good. Also, you may get plane fatigue after a while, because of how many artifacts they have. Either way, it's a do not miss.

    2013/11/10 Reviewing IP Webcams for Linux and Zoneminder:Dlink DCS900, Ubnt Aircam, Foscam FI8904W FI8910W, FFI9820W, FI9821W, Wansview NCB541W, and Zavio F3210
    π 2013-11-10 00:00 in Linux, Linuxha
    Links to cameras:
  • DCS900
  • FI8904W
  • NCB541W
  • FI8910W
  • FI8920W
  • FI8921W
  • Aircam
  • Edimax3115w
  • F3210
  • FI9826PB
  • FI9805P
  • FI9900P
  • NCM625GA (aka Wansview Q1)
  • NCM751GA (aka Wansview W1)
  • Wansview K1
  • Wansview W2
  • Wansview Q2
  • Reolink RLC-410
  • Wansview K2
  • I hearby want to thank Wansview for giving me some of the above cameras for review (I bought some of them on my own, and after seeing my reviews, they asked me to test and review a few more). Note that while wansview cameras do not offer the sharpest 1080p pictures I've seen (Zavio and FI9900 win, even I hate foscam), the nice things I've written on wansview are not based on the free cameras, but the fact that they have always answered my support queries, including the technical ones showing issues with the firmware, and fixed the firmware after that (including making it work on linux and other other operating systems), while Foscam tells people that they're running the wrong version of windows, and that's it.
    zavio truly sells good cameras, but sadly they cost more than double, which may be a bit out of reach for many people.

    Zoneminder

    I have tried a bunch of IP cameras with linux and zoneminder. Here is a short review of them below if that helps others.

    One good page to know about is ispyconnect, which gives all the entrypoints for many cameras:

  • http://www.ispyconnect.com/man.aspx?n=foscam
  • http://www.ispyconnect.com/man.aspx?n=wansview
  • http://www.ispyconnect.com/man.aspx?n=zavio
  • Camera in 2009

    Dlink DCS900

    My first IP Cam was a Dlink DCS900. Today, it's utter crap, the picture is bad, the camera is slow, but back in the day it was cheap-ish and there weren't many other ones:






    Cameras in 2013/11

    Foscam FI8904W

    This is an outdoors camera. It's not wide angle at all, which I don't like, and it's low res (640x480), but the picture is decent enough for that resolution:




    Wansview NCB541W

    It's a clone of the FI8904N. The firmware isn't great, but it works well enough for image capture and it's the cheapest you'll find for 480p with a motorized base _and_ night view.



    Foscam FI8910W

    Similarly the FI8910W is ok enough for 640x480, but don't expect miracles:






    Because it wasn't wide angle enough, I got a 3rd party (cheap) wide angle F2.0 lens for it. It blurs the picture around the edges quite a bit, but gives me the shot I wanted:



    Foscam FI8920W

    It's supposed to be an HD camera (720p), but the picture is horrible and the web interface too (does not work with linux). It's not even wide angle. DO NOT BUY:




    Foscam FI8921W

    It's the not as bad version of the FI8921W. To be honest, the 720p HD picture is still blurry, but it's better than 480p. You get what you pay for. The web interface does not work with linux but you can capture screenshots from it with zoneminder on linux after you've set it up. It also has an RTSP stream, but I found it often gave me frames where the picture was aborted half way (actually I found out later that reducing the frame rate seems to fix this), so I use image capture instead of RTSP for zoneminder.



    I also changed the F2.8 lens to a wider dealextreme F2.0 lens that's blurry around the edges:



    Ubnt Aircam

    It wins for the very wide angle and cheap price for 720p, but that's because the sensor is not 720p, only the output is. If you take a 480p shot and you blow it up to 720p, it looks almost the same. Sad... The newer firmware offers image capture if you turn off authentication, but I didn't get it to work well with zoneminder (it's too slow), so I use RTSP. I would not really recommend this camera unless you want the very wide angle. Note that some cameras ship blurry because the lens (very very hard to turn, it's stuck with glue I think), is not focussed. At times, it'll also show you wrong colors.

    out of focus out of the box, this is kind of sad
    out of focus out of the box, this is kind of sad

    this is only barely better than the 480p version but great wide angle
    this is only barely better than the 480p version but great wide angle

    480p picture blown up to 720p to compare with 720p 'native'
    480p picture blown up to 720p to compare with 720p 'native'

    Edimax 3115w

    This is a nice cheap camera with an honest resolution of 960p. The caveats are that it's not motorized, and it does not have night/IR vision, but otherwise the picture and resolution are good and you can't beat them for the price (assuming you can still find it for sale anywhere)



    Zavio F3210

    It's more expensive ($260), but the picture is fantastic, even in 1080p (reduced here for the web page). Too bad it does not come motorized, and for Wifi you'll need the F3215 which is not motorized either ($280).
    The web interface and protocol support are fantastic. This is a camera that all other manufacturers should inspire themselves from. You can fully configure it in any browser (including from linux of course), and see the live view without any special plugin.






    Cameras in 2015/08

    My old Foscam fi8904w died (it was my only outdoor camera), so I looked at replacements. Sadly foscam only got worse software/firmware-wise, sometimes even making cameras that work with virtually no OS (including new versions of windows in some cases), and they continued to have lots of fake 5 star reviews on amazon, which is enough of a reason not to by from them anymore.
    A few cameras I looked at first though:

    Foscam FI9826PB

    Don't buy this, get the cheaper Wansview NCM625GA/Q1 (or Q2) which comes with higher resolution and no cheating fake reviews on amazon.

    Foscam FI9805P

    This one might have worked, again if you forget all the fake amazon reviews, but it's superseeded by the FI9900P.

    Foscam FI9900P

    The amazon reviews are saying: good camera quality, and questionable firmware with bugs, a foscam specialty still... I ordered one out of morbid curiosity and to replace my outdoors Foscam FI8904W which just died, but really I (or you) shouldn't be giving any money to Foscam anymore...
    If you don't mind spending more ($300), the Zavio B6210 seems like a good serious replacement.

    Anyway, here's what I found on the Foscam 9900:

  • The firmware is even more horrible than it was before. I could not even get it to display a picture in windows with MSIE and their stupid windows only plugin that I shouldn't even have to trust to see a picture. I was able to change video settings on windows, but not see the picture.
  • With the android software, I can see the picture/video, but not change the video settings
  • And get this, if I try to login on linux, I cannot even login. Yes, login denied without the stupid windows plugin (i.e. I cannot even access settings and non video related stuff).
  • If you guessed that I think Foscam sucks by now, you guessed right. First to me, they look like liars and cheaters by what really looks like buying fake reviews on amazon, and then in the last 2 years, they actually made their web interface worse since the FI8921W where you could at least login on linux and change settings.

    While I'll repeat that life is too short to deal with this crap and give money to that company, I used jpeg URL ( /cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=user&pwd=pwd1 ) to make it work with zoneminder, and it works well enough. As other reviews have said, the optics are actually quite good, I do like the very wide angle picture without barrel effect:






    Too bad that Foscam's firmware sucks so much, the optics are good now. If you need an outdoor camera, and value your time and sanity a few dollars, I'd recommend the Zavio B6210. If an indoor camera used outdoors with light weather proofing is good enough, try the cheaper and somewhat better Wansview NCM625GA/Q1 below (although its picture isn't as wide and show barrel effect):

    Wansview NCM625GA (aka Wansview Q1)

    I ended up continuing with an indoor camera that I'm going to use outdoors. A Zavio F3215 would have been very good, but this new Wansview is half the price and is motorized. It's much much better than the old NCB541W I have (and actually that was a very good camera for the price too). The Wansview NCM625GA is sold on amazon as Wansview 1080P 2.0MP WiFi Wireless IP Security Camera, Full HD.
    Note that there is new firmware for this camera. The original firmware was mostly windows only, but the new one has a flash interface that works on linux and most operating systems.

    Cons:

  • It used to require a windows plugin, but now it works with flash too on most operating systems (including linux)
  • Pros:

  • Price/features is unbeatable ($80), video quality is good
  • Nice wide lens (maybe not what you needed, but that's what I wanted)
  • the motorized mount almost has 360 travel
  • relay outputs if you care about that
  • Updates:

  • If you install firmware 0.40 and this firmware patch I got from Wansview (both can be installed in the web upload interface), http://ipaddr/mjpeg/snap.cgi?chn=0 now returns a proper Content-Type: image/jpeg header and will work with Zoneminder and other software that expects a jpeg. You can also get official firmware updates from this site: http://www.wansview.com/Service/download/25.html
  • Info:

  • Turns out you can get simple jpegs from that camera without a plugin. The magic URL is http://ipaddr/mjpeg/snap.cgi?chn=0 . Note that the firmware did not return a proper "Content-Type: image/jpeg" header, so the jpeg URL does not work with zoneminder and may not work with other software. This is now fixed with a firmware patch_.
  • I installed the recommended iSmartViewPro on android, scanned the QR code on the back of the camera, and had it working instantly.
  • The video works fine on linux with ( vlc rtsp://ipaddr/live/ch0 , vlc rtsp://ipaddr/live/ch2 , vlc rtsp://ipaddr/live/ch3 ).
  • PTZ can be controlled with GET ipaddr/hy-cgi/ptz.cgi?cmd=ptzctrl&act=left|right|up|down|stop|home|hscan|vscan (you can also add &speed=1-4 for a slower/faster scan speed).
  • Move to a preset: GET ipaddr/hy-cgi/ptz.cgi?cmd=preset&number=1&act=goto (I gathered those by dumping strings in the npHYPlayer.dll they provide for windows).
  • From the command line, try wget -q -O - --user=admin --password=pwd 'http://ipaddr/hy-cgi/ptz.cgi?cmd=preset&number=2&act=goto'
  • To move the camera just a bit to the left, try this: wget -q -O - --user=admin --password=pwd 'http://ipaddr/hy-cgi/ptz.cgi?cmd=ptzctrl&act=left&speed=2'; sleep 1; wget -q -O - --user=admin --password=pwd 'http://ipaddr/hy-cgi/ptz.cgi?cmd=ptzctrl&act=stop&speed=2'
  • It works fine with zoneminder 1.28 although I have to configure the 1080p stream on the camera to only be 3fps, or my zoneminder backend cannot process it quickly enough and the picture gets truncated (also there is up to a 5 second delay, but that seems to be true for zoneminder with many RTSP streams). If this does not work well for you, you can also simply configure zoneminder to pull the jpeg without using RTSP.
  • With the newer firmware, you can now do jpeg image capture too like you would with any basic webcam:
  • http://wansview-ncm625ga-1/mjpeg/snap.cgi?chn=0 gives you a single jpeg snapshot (which on newer firmware like 48 is 1920x1072 instead of 1920x1080, beware!)
  • http://wansview-ncm625ga-1/mjpeg/stream.cgi?chn=0 gives you an mjpeg stream that works with zoneminder but for me it gives a lower frame rate (1fps while I can do about 5fps on jpeg pulls from snap.cgi).

  • The 1920x1080 shots are truncated to 1280 for display on this page
    The 1920x1080 shots are truncated to 1280 for display on this page





    Wansview NCM751GA (aka Wansview W1)

    Wansview just came out with a competitor to the Foscam 9900, it's priced at the same $150 (now $100-ish 2016/12). If you need a cheap 1080p outdoors camera, and you hate foscam like I do (as explained above: bad firmware, and dishonest fake reviews on amazon), it's a decent option. However, the optics/video capture are inferior to both the foscam 9900 and the Wansview NCM625GA. For some reason, the 1080p picture looks like a blown up burry 720p or maybe 480p picture (this turned out to be due to my lens being out of focus, it's better after I fixed that). Also this camera is big and heavy compared to the Foscam 9900 (try the W2 instead).
    Please read the Wansview Q1 review for details on magic URLs to use, and firmware updates.

    This camera was superseeded by the Wansview W2 which is both much smaller and cheaper. Honestly, the only advantage of the W1 is the onboard storage if you care about that. For remote capture support, the W2 will be a much better bet (and almost half the price).

    The viewing anble is pretty narrow. That's either a good or a bad thing depending on your needs, but if you need wide, prever the NCM625GA if you can put it outdoors safely, or consider the foscam or a higher priced camera. The night vision is decent though:

    The 1920x1080 shots are truncated to 1280 for display on this page
    The 1920x1080 shots are truncated to 1280 for display on this page





    My camera was giving blurry pictures because the lens was mis-adjusted. I had to open it up and readjust the lens for the picture to a bit more clear.

    Like the NCM625GA, it now comes with firmware that works fine with linux and any operating system, and the android app gets the camera working in no time after you scan the QR code.

    Wansview K1

    This is wansview's smaller version of the NCM625GA that adds temperature and humidity monitoring while removing the motorized base.
    Please read the Wansview Q1 review for details on magic URLs to use, and firmware updates.

    It's a great little camera. Just like its big brother, I installed the recommended iSmartViewPro on android, scanned the QR code on the back of the camera, and had it working instantly. The picture quality is very good and this is the widest picture of any camera I've reviewed so far (even if it comes at the price of barrel effect).
    Please refer to my Wanview NCM625GA review for configuration details. The only real downside is the placement of the ethernet jack, making it hard to fit some ethernet cables unless you remove the flexible sleeve, but that's a manageable problem :)

    If you have firmware 0.39 or 0.40 and install this firmware patch I got from Wansview (via the web upload interface), http://ipaddr/mjpeg/snap.cgi?chn=0 now returns a proper Content-Type: image/jpeg header and will work with Zoneminder and other software that expects a jpeg. If your firmware is 0.41 or later, it should just work without the patch.

    It is the best 1080p camera you can get for that price, I'm quite impressed with it.

    The 1920x1080 shots are truncated to 1280 for display on this page
    The 1920x1080 shots are truncated to 1280 for display on this page





    Wansview W2

    This is wansview's smaller version of the Wansview W1 (NCM751GA). It's much smaller, cheaper, and otherwise short of onboard storage, it's really identical in functionality, including the narrow 6mm lens, which may or may not be good depending on your application.
    Please read the Wansview Q1 review for details on magic URLs to use, and firmware updates.

    My camera shipped with firmware 0.42 which supports http://ipaddr/mjpeg/snap.cgi?chn=0 out of the box with a proper Content-Type: image/jpeg header and will work with Zoneminder and other software that expects a jpeg.

    This is definitely a good alternative to the Foscam FI9900 if you are ok with a narrow lens in exchange for better firmware froma better company. However I'm not going to lie, the picture is not ultra sharp. It doens't look blurry but it feels like the sensor is not truly 1080p, or something is robbing a bit of resolution or sharpness.

    The 1920x1080 shots are truncated to 1280 for display on this page
    The 1920x1080 shots are truncated to 1280 for display on this page





    Wansview Q2

    I really liked my Wansview Q1, it was a great motorized camera with good wide lens, for a good price. The Q2 is a similar camera that's just a bit smaller, and offers similar performance. At the time I'm writing this, they are similarly priced. The Q1 is tiny bit bigger and offers a it more I/O. The Q2 is smaller and white if you prefer that over white, but the more important difference is that the Q2 has a lens that is a bit wider, so you will see a little bit more of your room with it than with a Q1. On the minus side, I found the picture less sharp on the Q2 than the Q1. You can compare the screenshots for yourself.
    Please read the Wansview Q1 review for details on magic URLs to use, and firmware updates.

    My camera shipped with firmware 0.42 which supports http://ipaddr/mjpeg/snap.cgi?chn=0 out of the box with a proper Content-Type: image/jpeg header and will work with Zoneminder and other software that expects a jpeg.

    The Q1 picture is a bit more narrow and looks a bit more sharp
    The Q1 picture is a bit more narrow and looks a bit more sharp

    The Q2 picture is a bit wider and bit less sharp
    The Q2 picture is a bit wider and bit less sharp

    Here are the other Q2 screenshots, they look fairly good at night;






    Reolink RLC-410

    I tried a reolink since it offered 1440p resolution instead of 1080p like the wansview, and despite the low price, the firmware worked pretty well (no problems on linux/chrome), and http jpeg downloads work fine too, although the download URL is weird: http://192.168.205.206/cgi-bin/api.cgi?cmd=Snap&channel=0&user=user&password=pwd . Actually, let me scratch that, jpeg downloads work fine in a browser, but return a content-type chunked that does not work with software that expects a simple image/jpeg in return. As a result, zoneminder does not work with this camera unless you use RTSP which itself is full of problems since it can easily push data faster than zoneminder can process it, yielding broken frames.

    Setup was a breeze, the one downside is because it's a PoE camera, it does support 12V input, but it does not ship with a 12V power supply. Thankfully I have a drawer full of those :)
    The default picture was way too bright (over exposed) and the sharpening was turned up too high, making the picture grainy. On the last picture, I turned the brightness down as well as the sharpening, and the results are better. The lens is about as wide as Wansview Q2. *Update* a firmware update seems to have dramatically improved the picture quality, which to be honest, was pretty poor. The screenshots below are the old picture quality, I have not had the chance to get shots with the new firmware yet since my camera is installed outdoors at the moment.

    Here are screenshots (resized to 1280, but you can click on them to get the full original size). Again, these are very poor quality and a new firmware fixes those:







    Wansview K2

    This is wansview's smaller and cheaper version the K1. It's about as barebones as you can get for an IP camera: $30.
    This camera is about half the size of the K1 (on top of being half the cost), and is wifi only. Setting it up is interesting as it doesn't use the typical methods of acting as an access point that your phone connects to, or having a side channel to configure it via bluetooth (probably for cost reasons). Instead you use the wansview smartphone app to enter your access point details and it'll emit a loud sound that encodes the Wifi name and password, which get picked up by the camera's microphone. That's a pretty cool hack :)
    To be fair, setting up the camera is a bit blind, you only have 2 LEDs close to one another and you need to send the sound sequence at the right time and hope it works, or reboot and try again. Also, don't forget that if you send a 5Ghz network, it won't work since the camera only does 2.4Ghz wifi. It worked for me on my second try, but basically you're working kind of blind. This may get a bit annoying if you're having problems setting it up, and in that case spending more money on the K1 may be a better option.

    So, for that limited price, you still get most of the typical wansview interface without any sdcard or recording support, but you can tell the CPU is slow. It's slow enough that you have to wait for the web page to load, and also slow enough that a reboot takes a while. Last, but not least the picture is only 720p, not 1080p, and when comparing a downsided picture from a K1 and a native 720p picture from the K2, the K2 picture is not as sharp but still very usable
    It's far from a perfect camera, but again, you only paid $30 (my favourites from Wansview are definitely K1 and Q1). If you want a camera that's more capable, the K1 is a very good small camera, so get that one instead. The choice is yours :)

    Here are the screenshots in native 720p:








    Using cameras outdoors

    I'm in California, so we don't have extreme weather. I use indoor cameras outdoors because the choice of good outdoor cameras with wide angles and reasonable pricing, was limited to say the least. This is probably an example of what not to do :) (but it's been working fine for over 2 years, and as luck would have it, my real outdoor camera is the only one that died after 2.5 years of use).

    Foscam FI9821W and Zavio F3210, along with an IR booster for better distance vision at night with the Zavio
    Foscam FI9821W and Zavio F3210, along with an IR booster for better distance vision at night with the Zavio

    we don't exactly have harsh winters here, or really bad rain, so part of my equipment is just outdoors under the gutter
    we don't exactly have harsh winters here, or really bad rain, so part of my equipment is just outdoors under the gutter

    I then have ethernet and power going in my yard to the malibox
    I then have ethernet and power going in my yard to the malibox

    I do use a waterproof box for equipment outside (includes an insteon iolinc to control the mailbox and flood light if you open it)
    I do use a waterproof box for equipment outside (includes an insteon iolinc to control the mailbox and flood light if you open it)

    very tight fit, but I used a 7A 12V power supply to power the gigabit switch, floodlight (12V LEDs), and 4 IP cams
    very tight fit, but I used a 7A 12V power supply to power the gigabit switch, floodlight (12V LEDs), and 4 IP cams

    this should take care of any mailbox thieves :)
    this should take care of any mailbox thieves :)

    2013/11/06 Attending and presenting at Usenix Lisa 2013
    π 2013-11-06 01:01 in Linux
    Usenix was in Washington DC this year, and a coworker got me to present a paper on my work there, so I did and I was accepted.

    A few pictures:



    Bruce Schneider via VC
    Bruce Schneider via VC

    I attended an evening BOF on lock picking
    I attended an evening BOF on lock picking

    I managed to open a few
    I managed to open a few

    Tatu gave a very boring talk about ssh key management and gave his commercial solution which most people seemed to agree was a bad solution, disappointing.
    Tatu gave a very boring talk about ssh key management and gave his commercial solution which most people seemed to agree was a bad solution, disappointing.

    They had a single evening party bowling based:




    My coworker Todd gave a fun end of conference keynote:


    Because I was presenting a paper, I only had a short 30mn timeslot, which is way too short for my talk which needed closer to an hour, so I gave a very fast condensed version. Lisa has posted a video here which does not show me, but shows the slides. I self recorded the talk but it doesn't show the screen (slides clearly), that said, you can play both at the same time if you wish :)

    Here is a link to the full paper in PDF, which gives many more details than my talk: http://marc.merlins.org/linux/talks/ProdNG-LISA/Paper/ProdNG.pdf

    The talk went very well, and hopefully a few people enjoyed the paper, because it sure took a long time to write :)

    2013/11/03 Smithsonian Air and Space Museum in Washington DC
    π 2013-11-03 01:01 in Flying
    First things to know: it's one of 2 museums, the other one is by the IAD airport and contains the bigger stuff that doesn't fit there (and couldn't have been brought there through the streets for some bits). This museum takes more than a full day to visit if you go through the exhibits, I'm efficient but I had to go back twice to finish it (mostly), and that was without even going through the planetarium or IMAX, but I did do the 1H guided tour once and that was worth it.

    Then, you need at least another full day to see the much bigger Smithsonian Air and Space Museum by Washington Dulles (IAD)

    google has the copy, they have the real one :)
    google has the copy, they have the real one :)


    US and Russian capsule rendez-vous
    US and Russian capsule rendez-vous

    X-15, the first prototype to fly to space before rockets
    X-15, the first prototype to fly to space before rockets



    Bell X-1
    Bell X-1


    747 cockpit
    747 cockpit



    skylab, before the space station
    skylab, before the space station







    Howard Hughes' speed record plane
    Howard Hughes' speed record plane

    The actual voyager plane that went around the world
    The actual voyager plane that went around the world


    great way to show how a modern telescope works
    great way to show how a modern telescope works


    These few pictures do not give it justice, the amount of history of aviation, space, including what happend to other countries, how GPS works and why, how the moon landings were done, and how we're going to Mars now, it's a lot of information.
    I guess that's expected, but it is indeed bar none the best such museum I've seen in the world so far.

    2013/11/02 Visiting Washington DC
    π 2013-11-02 01:01 in Trips
    It had been more than 20 years since I last went to Washington DC and visitted the attractions. Needless to say that I didn't remember much, and I was well able to enjoy a new visit. Since I was speaking at LISA 2013, which happened to be in DC, I added a few days before and after to get around. It was the same for Jennifer, so it worked out great :)
    Since we went in November, there were fewer people, but it also got dark early. Since all the museums close at 17:30, we went to see a few monuments like Lincoln, at night.

    A few pictures:






    One night, we went to see the Lincoln Memorial, and the other war memorials:









    The first morning, I followed tripadvisor recommendations, we started with the Newseum because it opens earlier. It was interesting, but maybe not worth limited time compared to Smithsonian museums:





    The Air and Space Museum was next, and fantastic (follow the link for many many more pictures):



    The next morning, we went to the bureau of engraving and printing:







    Right after, we went to the museum of American History:

    they had a google rack, cool!
    they had a google rack, cool!











    The next day, we started with the library of congress. It's beautiful inside, the guided tour was well worth it, and the museums inside are worth the time if you have it:










    We however ducked out of the library a bit early to get to the Capitol for our scheduled guided tours. We even got tickets to see the parliament (not in session) and the senate (in session, but nothing happening when we were there). No pictures allowed there though:












    After the capitol, I went back to the smithsonian air and space museum for the 3rd time, since I was still not even close to be finished.

    The next 3 days, I was at LISA, attending and presenting.

    Saturday morning, we went to the Jefferson Memorial before going to Mount Vernon:





    We drove to Mt Vernon next, where Jefferson used to live, beautiful grounds:









    this is where the slaves used to stay
    this is where the slaves used to stay


    a few pictures from the museum on site
    a few pictures from the museum on site



    From Mt Vernon, we drove to the Arlington Cemetary for a few hours, which also has beautiful grounds:

    It looks very nice in autumn
    It looks very nice in autumn


    the walk by the unknown soldier is still just as impressive
    the walk by the unknown soldier is still just as impressive





    Kennedy's Tomb
    Kennedy's Tomb

    Good views from up there:





    We were left we just 1h20 for a very quick visit of the Natural History Museum, which was worth more, but that's better than nothing:










    great picture!
    great picture!

    Sunday morning, our last day, we started by going to the Washington National Cathedral. OMG is it impressive, it's absolutely huge. Unfortunately we arrived during a service, and couldn't really stick around for a long time to visit the top after the service was over, but we visited the crypt underneath and that one along was worth the visit:





    down to the crypt
    down to the crypt







    From there, last but certainly not least, we went directly to the Smithsonian Air and Space Museum Udvar-Hazy by Washington Dulles Airport, which is probably the best such museum in the world (click on the link for a page dedicated to it.





    Right after the museum visit, we got back to the other side of the terminal for the last flight out home, and this concluded a great 8 days in DC.

    See more images for Visiting Washington DC

    More pages: July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 November 2015 October 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011 January 2011 December 2010 November 2010 October 2010 September 2010 August 2010 July 2010 June 2010 May 2010 April 2010 March 2010 February 2010 January 2010 December 2009 November 2009 October 2009 September 2009 August 2009 July 2009 June 2009 May 2009 April 2009 March 2009 February 2009 January 2009 December 2008 November 2008 October 2008 September 2008 August 2008 July 2008 June 2008 May 2008 April 2008 March 2008 February 2008 January 2008 December 2007 November 2007 October 2007 September 2007 August 2007 July 2007 June 2007 May 2007 April 2007 March 2007 February 2007 January 2007 December 2006 November 2006 October 2006 September 2006 August 2006 July 2006 June 2006 May 2006 April 2006 March 2006 February 2006 January 2006 December 2005 November 2005 October 2005 September 2005 August 2005 July 2005 June 2005 May 2005 April 2005 March 2005 February 2005 January 2005 December 2004 November 2004 October 2004 September 2004 August 2004 July 2004 June 2004 May 2004 April 2004 March 2004 February 2004 January 2004 October 2003 August 2003 July 2003 May 2003 April 2003 March 2003 January 2003 November 2002 October 2002 July 2002 May 2002 April 2002 March 2002 February 2002 November 2001 October 2001 September 2001 August 2001 July 2001 June 2001 May 2001 April 2001 March 2001 February 2001 January 2001 December 2000 November 2000 October 2000 September 2000 August 2000 July 2000 June 2000 April 1999 March 1999 September 1997 August 1997 July 1996 September 1993 July 1991 December 1988 December 1985 January 1980