2016年10月26日水曜日

新強震モニタから緊急地震速報を手に入れるスクリプト

まあ、あまり賢くない方法です。

これを1秒ごとにloopでぶん回せば
SignalnowExpressっぽい書式で手に入ります。

データ受信:013700110523142212110523142054ND20110523142114906N382E14230105266514










電文発表時刻地震発生時刻地震ID


x報緯度経度震源の深さMフラグ*3/の有無
エリアコード

sed, wget, jq, bcが必要です。

#!/bin/bash

EEWURL="http://www.kmoni.bosai.go.jp/new/webservice/hypo/eew/"`date "+%Y%m%d%H%M%S"`".json"
EQGET=`wget $EEWURL -q -O -`
PRMT=`echo $EQGET | jq -r .result.message`

if [ "$PRMT" = "" ]
        then
        EQR1=(`echo $EQGET | jq -r '.result.status, .report_time, .longitude, .is_cancel, .depth, .is_training, .latitude, .origin_time, .magunitude, .report_num, .report_id, .alertflg'`)
        if [ "${EQR1[0]}" = "success" ]
        then
                EQR2=()
                EQR2+=( 01 )

                if [ "${EQR1[4]}" = "true" ]
                        then
                        EQR2+=( 3910 )
                        EQR2+=( `echo ${EQR1[1]}${EQR1[2]} | sed -e 's/\///g' -e 's/://g' -e 's/^..//'` )
                        EQR2+=( `echo ${EQR1[8]} | sed -e 's/^..//'` )
                        EQR2+=( `echo "ND"${EQR1[11]}"0"` )
                        EQR2+=( `printf %02d ${EQR1[10]}` )
                        EQR2+=( "///////////////////" )
                else
                        EQR2+=( 3X00 )
                        EQR2+=( `echo ${EQR1[1]}${EQR1[2]} | sed -e 's/\///g' -e 's/://g' -e 's/^..//'` )
                        EQR2+=( `echo ${EQR1[8]} | sed -e 's/^..//'` )
                        EQR2+=( `echo "ND"${EQR1[11]}"0"` )
                        EQR2+=( `printf %02d ${EQR1[10]}` )
                        LATI=`echo "scale=0; ${EQR1[7]} * 10" | bc | sed s/\.[0-9,]*$//g`
                        EQR2+=( `echo "N"$LATI` )
                        LNGI=`echo "scale=0; ${EQR1[3]} * 10" | bc | sed s/\.[0-9,]*$//g`
                        EQR2+=( `echo "E"$LNGI` )
                        KM=`echo ${EQR1[5]} |sed -e "s/km//"`
                        EQR2+=( `printf %03d $KM` )
                        MAG=`echo "scale=0; ${EQR1[9]} * 10" | bc | sed s/\.[0-9,]*$//g`
                        EQR2+=( `printf %02d $MAG` )
                        if [ "${EQR1[12]}" = "警報" ]
                        then
                                EQR2+=( XXXXE )
                        else
                                EQR2+=( XXXXX )
                        fi
                fi
                echo ${EQR2[@]} | sed -e 's/ //g'

        fi
fi
~

SignalNowのログをNAS上のファイルに書き出させていろいろしてたので
SignalNowの書式にしてます。

震度演算と猶予時間の計算は完成したらはっつけます…
(S波の速度を求める計算部分がまだ未完成なのでS=4.5km/sでざっくりと仮実装してます)

2015年2月8日日曜日

V4L-DVBをごにょごにょ

【DVB driver for SKnet MonsterTV HD series】

を3.0.6Kernelに組み込もうとしているが挫折

途中までのパッチ

drivers/media/dvb/dvb-usb/mtvhd.c: In function ‘__check_enable_hdp_rc’:
drivers/media/dvb/dvb-usb/mtvhd.c:28:1: warning: return from incompatible pointer type [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c: At top level:
drivers/media/dvb/dvb-usb/mtvhd.c:708:4: error: unknown field ‘frontend_attach’ specified in initializer
drivers/media/dvb/dvb-usb/mtvhd.c:708:4: warning: initialization makes integer from pointer without a cast [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:708:4: warning: (near initialization for ‘hdu2_properties.adapter[1].size_of_priv’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:709:4: error: unknown field ‘streaming_ctrl’ specified in initializer
drivers/media/dvb/dvb-usb/mtvhd.c:709:4: warning: initialization from incompatible pointer type [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:709:4: warning: (near initialization for ‘hdu2_properties.adapter[1].frontend_ctrl’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:710:4: error: unknown field ‘stream’ specified in initializer
drivers/media/dvb/dvb-usb/mtvhd.c:710:4: warning: braces around scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:710:4: warning: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:711:5: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:711:5: error: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:711:5: warning: initialization makes pointer from integer without a cast [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:711:5: warning: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:712:5: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:712:5: error: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:712:5: warning: excess elements in scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:712:5: warning: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:713:5: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:713:5: error: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:713:5: warning: excess elements in scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:713:5: warning: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:714:5: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:714:5: error: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:714:5: warning: braces around scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:714:5: warning: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:715:6: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:715:6: error: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:715:6: warning: braces around scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:715:6: warning: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:716:7: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:716:7: error: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:716:7: warning: initialization makes pointer from integer without a cast [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:716:7: warning: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:718:5: warning: excess elements in scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:718:5: warning: (near initialization for ‘hdu2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:799:4: error: unknown field ‘frontend_attach’ specified in initializer
drivers/media/dvb/dvb-usb/mtvhd.c:799:4: warning: initialization makes integer from pointer without a cast [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:799:4: warning: (near initialization for ‘hdp2_properties.adapter[1].size_of_priv’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:800:4: error: unknown field ‘streaming_ctrl’ specified in initializer
drivers/media/dvb/dvb-usb/mtvhd.c:800:4: warning: initialization from incompatible pointer type [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:800:4: warning: (near initialization for ‘hdp2_properties.adapter[1].frontend_ctrl’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:801:4: error: unknown field ‘stream’ specified in initializer
drivers/media/dvb/dvb-usb/mtvhd.c:801:4: warning: braces around scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:801:4: warning: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:802:5: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:802:5: error: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:802:5: warning: initialization makes pointer from integer without a cast [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:802:5: warning: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:803:5: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:803:5: error: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:803:5: warning: excess elements in scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:803:5: warning: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:804:5: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:804:5: error: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:804:5: warning: excess elements in scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:804:5: warning: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:805:5: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:805:5: error: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:805:5: warning: braces around scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:805:5: warning: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:806:6: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:806:6: error: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:806:6: warning: braces around scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:806:6: warning: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:807:7: error: field name not in record or union initializer
drivers/media/dvb/dvb-usb/mtvhd.c:807:7: error: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’)
drivers/media/dvb/dvb-usb/mtvhd.c:807:7: warning: initialization makes pointer from integer without a cast [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:807:7: warning: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:809:5: warning: excess elements in scalar initializer [enabled by default]
drivers/media/dvb/dvb-usb/mtvhd.c:809:5: warning: (near initialization for ‘hdp2_properties.adapter[1].fe_ioctl_override’) [enabled by default]
make[4]: *** [drivers/media/dvb/dvb-usb/mtvhd.o] エラー 1
make[3]: *** [drivers/media/dvb/dvb-usb] エラー 2
make[2]: *** [drivers/media/dvb] エラー 2
make[1]: *** [drivers/media] エラー 2
make: *** [drivers] エラー 2

になるのでまだ未解決

目標としてはこのドライバでPX-S3U2が動くといいな(たぶん無理)

PX-S3U2のAS11LoaderのUSBログ
とりあえずここからfirmwareとかごにょごにょできるはず

PX-S3U2のLinuxドライバってGNU GP(略)

2015年2月6日金曜日

Chinachu on Banana Pi


Banana Piは中華製のRaspberry Piのパチモノちっくな
Arm-based Single board computerで、
Allwinner A20を搭載しているためRaspberryPIより速い
そしてSerialATAを持っているので録画鯖に最適です。

Aliexpressで4-5kぐらいで手に入ります
もしくはアキバでも入手可能なので突撃してみるといいかもです

SDcardに好きなイメージ突っ込んで焼きます
以下のDebian wheezyをいれてみました
http://www.igorpecovnik.com/2014/09/07/banana-pi-debian-sd-image/
fdiskでパーティションを広げたりいろいろ好きにいじってください

拾い食いはいやな方はごりごりkernel buildとdebootstrapするといいと思う

これに1TBのTOSHIBA HDDとLinuxで使えそうなICカードリーダをつなげます
http://www.amazon.co.jp/dp/B003XF2JJY
とか
realtek のチップがのった格安リーダとか使えるはず

http://mimikakimemo.hatenablog.jp/entry/2014/06/08/193608
を参考に

$ sudo apt-get install build-essential curl git-core libssl-dev yasm libtool autoconf libboost-all-dev

$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
$ cd ~/chinachu/

ここでパッチを当ててください。
ただしchinachuのバージョンがころころと変わるので
当たらなかったら大意をくみ取って書き換えてください
sedでnave.shをいじってます。
 やっていることは

 CFLAGSのmarchをarmv7-aでベタ指定
 nave(というかnode)を --without-snapshotでコンパイル

$ ./chinachu installer
Chinachu Installer Menu:
[!] These are installed under all /home/*****/chinachu/...
[!] Recommend the Auto installation.
1) Auto (full)            5) Node.js Modules       9) libfdk-aac
2) Auto (fast)            6) epgdump              10) libogg
3) submodule              7) libx264              11) libvorbis
4) Node.js Environment    8) libvpx               12) libav
what do you install? > 1

あとはほかの方がかかれていることと同じなので詰まるところはないはずです。
一時間以上かかるので放置してください


chinachuが導入できたらnginxのstableを最新版を野良ビルドして導入してください。
(Debian wheezyだとnodeのsocket.ioに対応してない?)

server {
    listen 80;
    server_name hogehoge.hoge;
    access_log  /var/log/nginx/hogehoge.hoge.log;
    location / {
            proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_pass http://127.0.0.1:10772/;
        }
    }

とりあえずチューナーが来るのを待っている。

Realtek RTS5169の回路図解析?

Realtek RTS5169はSmartcard やSDなどMultimediacardの統合チップである。

ただしこれを素でSmart card reader に使っている製品もちらほらある。

その場合の回路図をジャンクのsmartcard readerから書き起こしたのでメモ程度に

おいておきます。

※無保証 コンデンサの定数は不明(LCRメータはあるので時季に追加します)


それと基板のスキャンデータもPSDでおいておきます。
回路図が違っていたら突っ込みを入れてください。
回路図が汚いのは仕様です

2012年11月26日月曜日

cyanogenmodのビルド(CM10)

cyanogenmodのwikiに書いてあるとおりにして詰まったところ
以前の手順が間違ってたので大幅修正
注:個人的なメモです、無保証


repo init -u git://github.com/CyanogenMod/android.git -b jellybean-stable
repo sync -j16

でソースを取得。
cd device
で移動
mkdir lge
cd lge
その後
git clone git://github.com/CyanogenMod/android_device_lge_iprj-common
git checkout -b jellybean-stable remotes/origin/jellybean-stable
ブランチを切り替え
cd ../
git clone git://github.com/CyanogenMod/android_device_lge_p930.git
git checkout -b jellybean-stable remotes/origin/jellybean-stable
デバイスをつなぎ
sh ./extract-files.sh
(もしかするとこの2つのdir名変えないといけないと思う)
その後
topdirに戻り
cd ./vendor/cm
./get-prebuilts

topdirに(ry
. build/envsetup.sh && brunch p930


i_dcmにする場合は./device/lge 以下のp930をi_dcmにしたあとごにょごにょする。
後日githubにあげるかも 

作り直しのときはtopdirでmake clean

足りない場所は各自補完してください。
書くのめんどい
間違っている場所は突っ込みいれていただければ直すかも

注意:ビルド後10分ぐらいで適当に書いたために大いに間違っている可能性あり。
ちゃんとrefにあたってください。


参考1
参考2

kernel sourceの入ったdir(./kernel/lge/iproj)を作らないといけなかったはず

2012年10月14日日曜日

JB用kernelの作り方メモ


git clone git://github.com/nekomimipanic/lge-kernel-iproj.git
cd ~/lge-kernel-iproj
git checkout android-msm-3.0-jb-dcm origin/android-msm-jb-3.0-dcm

export CCOMPILER=[適当な場所]/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
make  cyanogenmod_l01d_defconfig

make -j2 ARCH=arm TARGET_PRODUCT=i_dcm CROSS_COMPILE=$CCOMPILER 2>&1 | tee make-log
 zimageと*.koを手に入れたら、後は以前と同じようにboot.imgにパッキング。

2012年10月7日日曜日

いままでのあらすじ

今までのあらすじ

カーネルコンパイルしてP930用のCyanogenmodにboot.imgを組み込みました、
おしまい。

つめこみ方法とか

- boot.imgの展開
 ./split_bootimg.pl boot.img

- ramdiskの展開
mkdir ramdisk
cd ramdisk
zcat ../boot.img-ramdisk.gz | cpio -i

- ramdiskを詰め込み
./mkbootfs ./ramdisk | gzip -9 - > new.boot.img-ramdisk.gz

boot.imgの作成
mkbootimg --kernel zImage --ramdisk new.boot.img-ramdisk.gz --cmdline "console=ttyHSL0,115200,n8 androidboot.hardware=iprj" --base 0x40200000 --pagesize 2048 --ramdiskaddr 0x41a00000 -o new.boot.img

kernel buildの方法はいろんなところに転がっているのでそこで。
りぱっくbinaryはネット上やAOSPからbuildするなど これも(ry

kernelは
git clone git://github.com/nekomimipanic/lge-kernel-iproj.git
git checkout -b android-msm-3.0-dcm origin/android-msm-3.0-dcm
でダウンロードできるはず