ラベル Buffalo の投稿を表示しています。 すべての投稿を表示
ラベル Buffalo の投稿を表示しています。 すべての投稿を表示

2019年8月18日日曜日

中古ルーターにAsteriskを入れてみる

Buffalo WZR-HP-AG300Hをハードオフで300円でゲットした。
最初は昔買ったfonとかnanopiに入れようかと思ったけど、
複数のVoIPゲートウェイを接続して見たかったからHUBがあるルーターって選択肢として結構ありかも。

OpenWrtインストール

分解してUARTまで接続したけど、実はそんなことしなくても大丈夫だった。
https://openwrt.org/toh/buffalo/wzr-hp-ag300h
  1. 初期化する
  2. 192.168.11.1にアクセスすると管理画面が開く(root/パス無しで)
  3. ファームアップにて[openwrt-18.06.4-ar71xx-generic-wzr-hp-ag300h-squashfs-factory.bin]を書き込む
  4. 192.168.1.1にアクセスすると管理画面が開く
  5. ファームアップにて[openwrt-18.06.4-ar71xx-generic-wzr-hp-ag300h-squashfs-sysupgrade.bin]を書き込む
これで、OpenWrt化完了
@import “中古ルーターにAsteriskを入れてみる\openwrt.png”
その他の設定は良きに計らう

asteriskをインストール

root@OpenWrt:~# opkg install asterisk15 asterisk15-cdr \
asterisk15-chan-sip asterisk15-codec-ulaw asterisk15-res-rtp-asterisk \
asterisk15-format-gsm asterisk15-codec-gsm asterisk15-format-pcm asterisk15-res-agi
GUIからでも良いけど、なんとなく

まずは相互通話

/etc/asterisk/sip.conf
[general]
context=default
port=5060
bindaddr=0.0.0.0
language=ja
;nat=yes
allowguest=no
allow=ulaw
allow=alaw
allow=gsm

[user1]
type=friend
defaultuser=user1
secret=password1
host=dynamic
canreinvite=no

[user2]
type=friend
defaultuser=user2
secret=password2
host=dynamic
canreinvite=no
/etc/asterisk/extensions.conf
[default]
exten => 1,1,Dial(SIP/user1,30,r)
same  => n,Hangup()

exten => 2,1,Dial(SIP/user2,30,r)
same  => n,Hangup()
/etc/init.d/asterisk restart
通話できた!

USBメモリを使えるようにする

何かと使えるようにしておくと便利か
https://openwrt.org/docs/guide-user/storage/usb-drives-quickstart
https://rc30-popo.hatenablog.com/entry/20160103/1451829248
/etc/asterisk/extensions.conf
exten => 5,1,Goto(my-ivr,s,1)

[my-ivr]
exten => s,1,Set(dir=/mnt/sda1/)
exten => s,n,Ringing()
exten => s,n,Wait(3)
exten => s,n,Answer()
exten => s,n,Playback(${dir}music)
みたいな

USBシリアル変換を使えるようにする

これもついでに
https://qiita.com/hnw/items/9b5c99fa73e3716f67d2
今回は確かこれのはず
http://www.aitendo.com/product/13039
opkg install kmod-usb-serial-pl2303
これで/dev/ttyUSB0みたいに認識できた。
やっはりUSBがあるルーターは便利だ。夢が広がる。
(死ぬほどあるFON2405Eの出番がますます無くなる・・・)

PHPインストール

opkg install php7 php7-cli zoneinfo-asia

phpagi

PCでやった時と同じように
phpagi.php - The main phpagi class.
を/usr/share/asterisk/agi-binに保存する。改行コードとかに注意する。
あとはdtmf.phpを少し変更して
#!/usr/bin/php-cli -q
<?php
    /**************************************************
     *  dtmf.php
     **************************************************/

    set_time_limit(30);
    require_once('phpagi.php');
    error_reporting(E_ALL);
    //die("Syntax ok\n"); // line A: uncomment for syntax test

    define('ANS_TONE', '/usr/share/asterisk/sounds/dtmf');
    define('LOG_PATH', '/tmp/dtmf.log');
    define('TIMEOUT', 1000);

    /* log用 */
    $fp = fopen(LOG_PATH, "w");
    fwrite($fp, date("Y/m/d H:i:s")."\t"."Log File.\n");

    /* AGI */
    $agi = new AGI();
    $agi->answer();

  do
  {
    $result = $agi->get_data('/usr/share/asterisk/sounds/beep', 3000, 20);
    $keys = $result['result'];
    fwrite($fp, date("Y/m/d H:i:s")."\tDTMF=".$keys."\n");
  } while($keys != '111');
  $agi->hangup();

?>

も一緒に保存した。
あとは、
/etc/asterisk/extensions.conf
exten => 6,1,agi(dtmf.php)
これで出来た。

2015年4月13日月曜日

WAPM-HP-AM54G54を入手

はじまり

近所のリサイクルショップで見慣れない形状の無線LANAPを発見。
業務用らしい。アンテナがなくて、500円。
別に無線を出したいわけでは無いので、これでもOKです。

どんなものか

 外観はこんな感じ。ぼろぼろ(笑)

 http://buffalo.jp/products/catalog/item/w/wapm-hp-am54g54/


赤丸のところにUARTがあるようだ。
miniPCI×2とか富豪だね。他のカードに変えたら面白いかな。
PoE対応なので、それで遊ぶのも面白いかも。

今後の目標

もちろんOpenWrt化

2015年2月1日日曜日

GW-USMicroNとWLI-UC-GNをラズベリーパイで使う

この前、リサイクルショップで、GW-USMicroNが300円で売られていた。
小さくて可愛いのでついつい買ってしまった。

以前から持っているWLI-UC-GNと同じくらいの大きさ!
この大きさはラズベリー・パイに丁度いいと思い、早速接続ー

結論から書くと、2つとも同じドライバーで使えたのだ。

ベンダーIDとプロダクトIDは以下の通り。
GW-USMicroN は2019 ed14
WLI-UC-GNは0411 015d
 
一時的に使うのであれば、

modprobe rt2800usb
echo 2019 ed14 > /sys/bus/usb/drivers/rt2800usb/new_id

恒久的に使うのであれば、
/etc/udev/rules.d/99-wireless.rules

# PLANEX GW-USMicroN
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="2019", ATTR{idProduct}=="ed14", RUN+="/sbin/modprobe -qba rt2800usb"

# BUFFALO WLI-UC-GN
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0411", ATTR{idProduct}=="015d", RUN+="/sbin/modprobe -qba rt2800usb"


/etc/modprobe.d/wireless.conf

# PLANEX GW-USMicroN
install rt2800usb /sbin/modprobe --ignore-install rt2800usb $CMDLINE_OPTS; /bin/echo "2019 ed14" > /sys/bus/usb/drivers/rt2800usb/new_id

# BUFFALO WLI-UC-GN
install rt2800usb /sbin/modprobe --ignore-install rt2800usb $CMDLINE_OPTS; /bin/echo "0411 015d" > /sys/bus/usb/drivers/rt2800usb/new_id


やっぱり、ラズベリー・パイは情報が多くていいね!


----------------------------
ちなみに、前書いたGPIOの制御、ネットで調べたら使い方が書いてあった。
処理中(0.2s点灯、0.1s消灯を繰り返す)
gpio l <gpio> 2 1 4000 0 4000

エラー(0.1s点灯、0.1s消灯を繰り返す)
gpio l <gpio> 1 1 4000 0 4000

ふーん。使えるかも!

2014年11月15日土曜日

Buffalo WZR-600DHP2のdd-wrt化 その3

WZR-600DHP2を触る機会があったので、dd-wrtを導入してみた(のつづき)

定番プログラムを実行させてみた。

1.準備

ncursesの入手
生成
CC=arm-none-linux-gnueabi-gcc ./configure --prefix=/home/[自分の作業場所]/usr --host=arm-none-linux-gnueabi --with-shared

そしてmake, make install
usr内のbinと libをコピー

そして、定番プログラム・・・slの入手!
http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/
https://github.com/mtoyoda/sl
すごいよねこれ。

CC=arm-none-linux-gnueabi-gcc
CFLAGS=-O -I/home/[自分の作業場所]/usr/include/ncurses -I/home/[自分の作業場所]/usr/include -L/home/[自分の作業場所]/usr/lib

これでmakeするとslが生成される。
slもbinにコピー

2.いざ実行!


sshからログインすると、環境変数が読み込まれない?ようなので、
手動で・・・(なんか良い方法ないかな)
export TERMINFO=/lib/terminfo

するとこんな感じに実行できる!




Buffalo WZR-600DHP2のdd-wrt化 その2

WZR-600DHP2を触る機会があったので、dd-wrtを導入してみた(のつづき)

前回はdd-wrtのインストールまでを行った。
今回は、簡単なプログラムを実行させてみた。

クロスコンパイルをやってみる。

1.準備

ツールチェーンを入手
http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/

ツールチェーンはいろいろ種類があるみたいだけど、
 有名どころを使った。まずは動くことが大事。

2.スタティックリンクで生成してみる

いきなり難しいことはできないので、
スタティックリンクでやってみる
hello.c

#include <stdio.h>
int main(void)
{
 printf("Hello Wold\n");
 return 0;
}

いざコンパイル!!
arm-none-linux-gnueabi-gcc hello.c -static -o hello.exe

出来上がったhello.exeを600DHP2に転送して試してみる。

できた!

3.ダイナミックリンクで生成してみる

スタティックだけではつまらないので、ダイナミックリンクでもやってみる。
 
そのためには、ライブラリを保存できる環境が欲しい。
前回、SDカードが/jffsに自動マウントされるようにしたので、その領域を使う。

共有ライブラリの 保存先libを自由に変更できるようにするために、
SDカードに一式を保存して、それをメイン(/lib)として利用するようにする。

まずは、
/jffs内にclone/libを作成して、現在のlibの中身を全部コピー!!
ついでにclone/bin も作成して、全部コピー!!

そして、ツールチェーンの共有ライブラリもコピーする
CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/arm-none-linux-gnueabi/libc/armv4t/lib
これで、下ごしらえはできた。

dd-wrtの「管理」から 「コマンド実行」を選択し、
起動スクリプトを作成する。
内容としては、
#!/bin/sh
sleep 20
if [ -f /jffs/optware.enable ]; then
mount -o bind /jffs/clone/lib /lib
mount -o bind /jffs/clone/bin /bin
else
exit
fi

があれば大丈夫。
20秒待つのはおまじない。。
 マウントしたSDカードが意図しているものかの簡易的なチェックのために、
/jffs/にoptware.enableをという空のファイルを作っておく。
このファイルがある場合にSDカードのlibとbinを使用するしくみ。

 一度再起動して、下準備完了。

 早速、ダイナミックリンクで生成してみる。

arm-none-linux-gnueabi-gcc hello.c -o hello_d.exe

どや!

次は定番プログラムの実行に挑戦

Buffalo WZR-600DHP2のdd-wrt化 その1

WZR-600DHP2を触る機会があったので、dd-wrtを導入してみた。


どうやらdd-wrt化は実績があるみたいだ。 
USBポートにext3フォーマットのSDをつなげて、そこに各種アプリをインストールしてみる。

※以下自己責任+無線出力はOFFにすること。

1.dd-wrtの入手



動作確認したのは以下のバージョン
Path: Downloads › betas › 2014 › 11-11-2014-r25309 › buffalo_wzr-600dhp2 
公式版ではなくbetaなのか。。

2.インストール


<デバッグ画面からファームアップを行う>
詳細は以下のリンク先が詳しい

インストール後、192.168.1.1にアクセス
ここまではとても簡単にできる!



3.SDを外部ストレージ化


SDカードはext3にてフォーマットした。
600dhp2に刺してみると、自動でマウントされる。
されない場合は「ネットワーク」→「USB」にある
「自動ドライブマウント」を確認する。
表示を「日本語」にしていると、レイアウトが崩れるみたいたので、
「英語」と切り替えながら確認すると良さそう。
自動マウントされたSDカードが/dev/sda1として認識された。
このUUIDを「自動ドライブマウント」の下にある
Mount this Partition to /jffsにコピペする。
これでこのSDカードが常に/jffsにマウントされるようになる。


まずはここまで