четверг, 12 декабря 2013 г.

ssd on ubuntu

i've got new notebook with ssd on it. so right after fresh ubuntu install had to tweak it to save ssd from worn out.
had to google out tweaks and since i'm doing this second time here is just a relevant link and steps

1. disable swap http://help.ubuntu.ru/wiki/ssd
2. adjust sysctl params
3. adjust ext4 params
3. disable chrome cache http://ubuntuforums.org/showthread.php?t=1277711

пятница, 3 мая 2013 г.

ubuntu 13.04 skype issue on hp probook m5330m

upgrade to 13.04 was not as smooth as I wanted it to be. during upgrade some custom added repositories were disabled and I was not able to install skype after. there were number of unresolved dependencies until I finally did:


sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get upgrade

only after this 'sudo apt-get install skype' succeed

суббота, 13 апреля 2013 г.

nfs share from popcorn


needed to share popcorn internal hdd over nfs to by notebook which is on different network segment

on popcorn c-200

update /etc/exports
echo "/share *(ro,async,no_wdelay,no_subtree_check,no_root_squash,insecure,anonuid=0,anongid=0)" >/etc/exports



reload exports

exportfs -ra


and need to add it to LTU's user.scripts somewhere to make this changes permanent, otherwise exports change will be lost after next reboot



on notebook:
sudo mount -o 'vers=3' popcorn:/share /nfs/popcorn

суббота, 9 марта 2013 г.

автовключение benq s6 при появлении электричества


выяснилась одна проблема с benq s6 о которой я раньше не думал:
на квартире сейчас работают элекрики - старые розетки они отключили, бенкю врубают в удленнитель перед уходом. он к тому времени уже конечно же разрядился и вырубился и, увы, появление питания его автоматом не включает. т.е. без ручного нажатия на кнопку питания он не оживает и это очень не удобно если рассматривать этот девайс как автономное устройство для home automation ;-(
т.е. в теории с паяльником можно наверно собрать какой-нибудь watchdog который при наличии питания и  вырубленном benq будет "нажимать" на кнопку питания, но для это потребуется вскрывать устройство и жертвовать каким-то разьемом, чтобы не делать лишних дырок в корпусе.. в общем врядли я этим буду заниматься.

пятница, 16 ноября 2012 г.

ставим ubuntu на benq s6

описанный в пердыдущем посте мониторинг температуры на скорую руку проработал примерно неделю и после этого тот старый десктоп из первого шага начал активно умирать. раздумья на тему искать очередное старье или что-то более свежее навели меня вот на такую штуку:
которую на ebay в легкую можно купить за $59 с бесплатной доставкой в пределах США. два клика и две недели ожидания, когда с оказией оный довезут до минска и эта радость у меня в руках. вставил симку и пару минут потыкавшись, чтобы убедится что 3g работает (да-да adsl в квартире пока нет и инет мобильный) пошел искать howto на нее поставить что-нибудь типа юбунты... упс - нашел только ролик на ютюбе, что некто в древние времена поставил на нее ubuntu 8.04 без подробностей и посты на форумах о том что как включить wifi и 3g они не знают.. эх, пришлось думать самому:
  1. взял 32битную сборку ubuntu server 12.04.1 lts
  2. при помощи Unetbootin сделал загрузочную флэшку. на ней из-за бага в unetbootin нужно ручками переименовать четыре файла с расширением .ude на расширение .udeb в директории /pool/main/l/linux. Детали вот тут
  3. перегрузил девайс со вставленной флэшкой и ... получил ubuntu installer!
  4. далее отвечая на вопросы доходим до момента когда он все скопирует, настроит и предложит перегрузиться. вынимаем флэшку и соглашаемся.
  5. после перегрузки первая засада - экран пару раз моргает и отказывается что-либо показывать.. догадываюсь что, по-видимому, он переключает монитор в какой-то графический режим, который на этом железе не поддерживается ;-( но если installer может работать в текстовом, то почему сама убунта этого не делает? гуглю и нахожу как сказать grub'u работать в текстовом режиме. Перегружаюсь опять с флэшкой, открываю консоль, монтирую /dev/sda и редактирую /etc/default/grub как описанно. главное после этого не забыть запустить 'update-grub'. помогло!
    UPDATE: этот глюк у меня был только при первой попытке установить юбунту, где я, по-видимому, вначале выбрал какой-то экзотический режим консоли. позже, установка той же версии юбунты на другом benq s6 прошла гладко и без дополнительной возни с grub'ом
    итак имею установелнную юбунту 12.04 lts на benq s6, но с выключенным (обесточенными power mamager'ом) wifi и 3g ..
  6. опять гуглю и нахожу пост какого-то итальянца с описанием протокола для их включения
  7. модифицирую скрипт для управления Benq S6 ACPI EC (Embedded Controller) который даже соответствующие светодиоды зажигает: benqs6_ec.pl
    делаю скрипт для включения 3g
    #!/bin/bash
    benqs6_ec.pl 3g on
    modprobe -r usbserial
    modprobe usbserial vendor=0x1da5 product=0x4511
    

    и скрипт для включения и подключения к wifi которому на вход надо давать имя точки доступа
    #!/bin/bash
    rmmod libertas_sdio
    rmmod sdhci_pci
    beqs6_ec.pl wifi on
    modprobe sdhci_pci
    modprobe libertas_sdio
    sleep 2
    iwconfig wlan0 essid $1
    dhclient wlan0
    
  8. wifi у меня еще нет, это на будущее. а в настоящем настраиваю pppd over 3g (через vwdial)
Все. Дальше повторяю уже описанные ранее действа для мониторинга температуры и получаю удовлетворение от проделанной работы! ;-)

суббота, 10 ноября 2012 г.

мониторинг температуры на скорую руку

недавно купил квартиру без отделки и чтобы как-то скрасить ожидание долго-муторного цикла планирование-согласование-ремонт-въезд решил на скорую руку поставить там что-нибудь для отслеживания температуры (дом новый, квартира на мансардном этаже, высота потолков в максимум 5,25 метра и есть подозрение, что существующего отопления не хватает для поддержания комфортной температуры)

по идее надо было бы вести записи по ходу дел, но как-то не было нужды. а тут друг обзавелся той же проблемой (только в его случае был куплен дом, а не квартира) и чтобы сократить ему время на гугления решил восстановить шаги по памяти:

1. взял старый десктоп с установленной ubuntu
2. воткнул в нее 1-wire usb adapter ds2490 с несколькими подсоедененными температурным датчиками ds1820
3. поставил нужный софт

apt-get install owfs
apt-get install rrdtool

В файле конфигурации owfs'а /etc/owfs.conf закоментировал строку
server: FAKE = DS18S20,DS2405
и раскоментировал строку
server: usb = all
запустил owfs
service owserver start
и убеждился что все работает:
owdir
в ответ должны получить нечто типа:
/10.A3AA9D000800
/10.B3BA4B010800
/81.769127000000
/bus.0
/uncached
/settings
/system
/statistics
/structure
/simultaneous
/alarm

теперь дело за малым - 1) настроить периодический опрос датчиков, 2) хранение и визуализация температурных логов.

для 1-ого используем cron job, для 2-ого rrdtool:
apt-get install rrdtool
создаем базу для сохранения каждые 5-ть минут температуры с 3-х датчиков, которые я назвал indoor, outdoor, battery. По ним мы будет также смотреть на средние величины за последние 3 часа, 24 часа, 2 дня, а также за последнюю неделю, месяца и 1 год.
#!/bin/bash
rrdtool create $1 --start N --step 300 \
DS:indoor:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:12 \
RRA:AVERAGE:0.5:1:288 \
RRA:AVERAGE:0.5:12:168 \
RRA:AVERAGE:0.5:12:720 \
RRA:AVERAGE:0.5:288:365 \
DS:outdoor:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:12 \
RRA:AVERAGE:0.5:1:288 \
RRA:AVERAGE:0.5:12:168 \
RRA:AVERAGE:0.5:12:720 \
RRA:AVERAGE:0.5:288:365 \
DS:battery:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:12 \
RRA:AVERAGE:0.5:1:288 \
RRA:AVERAGE:0.5:12:168 \
RRA:AVERAGE:0.5:12:720 \
RRA:AVERAGE:0.5:288:365
вот так выглядит скрипт, который запускается кроном каждые 5-ть минут:
#!/bin/bash
cd /home/ssr/rrdtool

# Read temperature from sensor
tempread=`owread /10.B3BA4B010800/temperature`
tempread_heater=`owread /10.A3AA9D000800/temperature`

if [[ -z $tempread ]]
then
  indoor=`cat .last_indoor_t`
else
  indoor=`echo $tempread | cut -c -4`
  `echo $indoor > .last_indoor_t`
fi

if [[ -z $tempread_heater ]]
then
  heater=`cat .last_indoor_heater_t`
else
  heater=`echo $tempread_heater | cut -c -4`
  `echo $heater> .last_indoor_heater_t`
fi

outdoor=`./wunderground_t.pl`
if [[ -z $outdoor ]]
then
  outdoor=`cat .last_outdoor_t`
else
  `echo $outdoor > .last_outdoor_t`
fi


echo "heater/indoor/outdoor ${heater}/${indoor}/${outdoor}"

# Update database
rrdtool update database.rrd  -t \ 
indoor:outdoor:battery N:$indoor:$outdoor:$heater
две ремарки:
  • чтобы не было дырок в логах в случае если я вдруг датчики по какой-то причине не прочитались, я кэширую последнее прочитанное сообщение, но это можно было бы не далать и скрипт упростить.
  • я решил не сверлить дырку наружу, чтобы снимать температуру снаружи, а беру это информацию с интернета (конкретно с wunderground.com, но об этом возможно будет отдельный пост)
ну и теперь сгенерируем картинки:
#!/bin/bash
HOMEDIR=/home/ssr/rrdtool
cd $HOMEDIR
DB="$HOMEDIR/database.rrd"
COMMENT="Generated on `date "+%d %m %y %H\:%M %Z"`"
IMAGE="tz.png"
watermark="ssrhome inc."
width=600
height=100
periods=("Last 3 Hours" "Last 24 Hours" "Last 2 Days" "Last Week" "Last Month" "Last Year")
period_index=0
for time in 3h 24h 48h 8days 1month 1year
do
 PERIOD="${periods[$period_index]}"
 TITLE="temperature log for $PERIOD"
 2>/dev/null rrdtool graph `echo png/$PERIOD | tr ' ' '_'`_$IMAGE -A -s -$time -e now -a PNG \
     -t "$TITLE" \
     -v "°C" \
  -w $width \
  -h $height \
  -W "$watermark" \
  -z \
  -Y \
     DEF:Main=$DB:indoor:AVERAGE \
     COMMENT:"\t\t\tnow       avg.      max.      min."\\n \
     LINE1:Main#0000FF:"Indoor\t" \
     GPRINT:Main:LAST:"%5.1lf °C" \
     GPRINT:Main:AVERAGE:"%5.1lf °C" \
     GPRINT:Main:MAX:"%5.1lf °C" \
     GPRINT:Main:MIN:"%5.1lf °C"\\n \
     DEF:Out=$DB:outdoor:AVERAGE \
     LINE1:Out#00FF00:"Outdoor\t" \
     GPRINT:Out:LAST:"%5.1lf °C" \
     GPRINT:Out:AVERAGE:"%5.1lf °C" \
     GPRINT:Out:MAX:"%5.1lf °C" \
     GPRINT:Out:MIN:"%5.1lf °C"\\n \
     DEF:Heating=$DB:battery:AVERAGE \
     LINE1:Heating#00F0FF:"Heating\t" \
     GPRINT:Heating:LAST:"%5.1lf °C" \
     GPRINT:Heating:AVERAGE:"%5.1lf °C" \
     GPRINT:Heating:MAX:"%5.1lf °C" \
     GPRINT:Heating:MIN:"%5.1lf °C"\\n \
     COMMENT:"$COMMENT"


     period_index=$[ $period_index + 1 ]
done
И получим что-то типа такого:
Готово!