前の10件 | -
Raspberry Pi (raspbian) + Planex GW-450D [Raspberry Pi]
Raspberry Pi のNICだけが逝ってしまったのでその代替として11acの無線LAN子機「GW-450D」を導入した。ドライバ導入はメーカ(プラネックス)記事、
・「Raspberry Piで11ac無線LAN子機『GW-450D』を使うための設定方法」
を参考にしたが、当然、カーネルバージョンが上がっているので少し手順追加・変更が必要であった。
まずインストール済みRaspbianのカーネルバージョンは、
・GW-450DやWN-AC433UKをRaspberry Piで使う
ちなみに手元の環境のGCCバージョンは
次にファームウェアを最新版へアップデート。これはGW-450Dドライバのビルド環境を作成する際に取得するカーネルソースバージョンも最新版となるので、これらを同一にするのが目的。
次にこれに対応した最新版カーネルソースを取得しGW-450Dドライバのビルド環境を作成。
・https://bitbucket.org/sanrath/mediatek_mt7610u_sta_driver_linux-64bit/commits/a989fcd6e073205690434e99ac1dc2b0f837350b
の修正をあてることで、何とかコンパイルすることができた。以下はこれにVendorID、ProductIDなどの変更を追加したパッチファイルになる。
最後に冒頭のメーカ(プラネックス)記事を参考にネットワーク設定すれば良い。
・「Raspberry Piで11ac無線LAN子機『GW-450D』を使うための設定方法」
を参考にしたが、当然、カーネルバージョンが上がっているので少し手順追加・変更が必要であった。
まずインストール済みRaspbianのカーネルバージョンは、
$ uname -rだったが、この場合先人によればGCCのバージョンアップが必要とのことなので、その方の記事を参考にここではGCCバージョンアップのみを実施。
3.18.7+
・GW-450DやWN-AC433UKをRaspberry Piで使う
ちなみに手元の環境のGCCバージョンは
$ gcc -vへ上がっていた。
・・・・・・
gcc version 4.8.3 (Raspbian 4.8.3-13)
次にファームウェアを最新版へアップデート。これはGW-450Dドライバのビルド環境を作成する際に取得するカーネルソースバージョンも最新版となるので、これらを同一にするのが目的。
$ sudo apt-get updateちなみに手元の環境で確認すると、
$ sudo apt-get dist-upgrade
$ sudo apt-get install make bc ncurses-dev
$ sudo rpi-update
$ sudo reboot
$ uname -rがこの時点の最新カーネルバージョンだった。
3.18.8+
次にこれに対応した最新版カーネルソースを取得しGW-450Dドライバのビルド環境を作成。
$ sudo su
# cd /usr/src
# wget https://github.com/raspberrypi/linux/archive/rpi-3.18.y.tar.gz
# tar xvfz rpi-3.18.y.tar.gz
# head -5 linux-rpi-3.18.y/Makefile
VERSION = 3
PATCHLEVEL = 18
SUBLEVEL = 8
EXTRAVERSION =
NAME = Diseased Newt
# ln -s /usr/src/linux-rpi-3.18.y/ /lib/modules/`uname -r`/build
# cd /lib/modules/`uname -r`/build
# make mrproper
# zcat /proc/config.gz > .config
# make modules_prepare
# wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers
<3/9追記>いよいよ「GW-450D」ドライバのコンパイルであるが、このままでは途中エラーが発生してコンパイルできなかった。いろいろとググってみて、
Raspberry Pi 2の場合は上記最終行が以下になる
# wget https://github.com/raspberrypi/firmware/raw/master/extra/Module7.symvers -O Module.symvers
・https://bitbucket.org/sanrath/mediatek_mt7610u_sta_driver_linux-64bit/commits/a989fcd6e073205690434e99ac1dc2b0f837350b
の修正をあてることで、何とかコンパイルすることができた。以下はこれにVendorID、ProductIDなどの変更を追加したパッチファイルになる。
あとはこのパッチを当てればコンパイル・インストールできる筈である。$ cat mediatek_mt7610u_sta_driver_for_3.18.8.patch diff -urN a/RT2870STA.dat b/RT2870STA.dat --- a/RT2870STA.dat 2013-09-16 23:03:08.000000000 +0900 +++ b/RT2870STA.dat 2015-03-07 15:15:54.696136992 +0900 @@ -6,7 +6,7 @@ ChannelGeography=1 SSID=11n-AP NetworkType=Infra -WirelessMode=5 +WirelessMode=8 EfuseBufferMode=0 Channel=0 BeaconPeriod=100 @@ -17,7 +17,7 @@ FragThreshold=2346 TxBurst=1 PktAggregate=0 -WmmCapable=1 +WmmCapable=0 AckPolicy=0;0;0;0 AuthMode=OPEN EncrypType=NONE diff -urN a/chips/mt76x0.c b/chips/mt76x0.c --- a/chips/mt76x0.c 2013-09-16 23:03:08.000000000 +0900 +++ b/chips/mt76x0.c 2015-03-07 15:15:54.706136902 +0900 @@ -1573,7 +1573,7 @@ E2: B0.R21<0>: xo_cxo<0>, B0.R22<7:0>: xo_cxo<8:1> */ RFValue = (UCHAR)(pAd->RfFreqOffset & 0xFF); - RFValue = min(RFValue, 0xBF); /* Max of 9-bit built-in crystal oscillator C1 code */ + RFValue = min(RFValue, (UCHAR)0xBF); /* Max of 9-bit built-in crystal oscillator C1 code */ rlt_rf_write(pAd, RF_BANK0, RF_R22, RFValue); rlt_rf_read(pAd, RF_BANK0, RF_R22, &RFValue); diff -urN a/common/cmm_info.c b/common/cmm_info.c --- a/common/cmm_info.c 2013-09-16 23:03:08.000000000 +0900 +++ b/common/cmm_info.c 2015-03-07 15:15:54.716136813 +0900 @@ -44,7 +44,7 @@ #ifdef CONFIG_STA_SUPPORT IF_DEV_CONFIG_OPMODE_ON_STA(pAd) - DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__)); + DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s %s\n", STA_DRIVER_VERSION, STA_DRIVER_BUILD)); #endif /* CONFIG_STA_SUPPORT */ return TRUE; diff -urN a/common/cmm_mac_usb.c b/common/cmm_mac_usb.c --- a/common/cmm_mac_usb.c 2013-09-16 23:03:08.000000000 +0900 +++ b/common/cmm_mac_usb.c 2015-03-07 15:15:54.726136723 +0900 @@ -27,6 +27,8 @@ #ifdef RTMP_MAC_USB +#define usb_buffer_alloc(a, b, c, d) usb_alloc_coherent(a, b, c, d) +#define usb_buffer_free(a, b, c, d) usb_free_coherent(a, b, c, d) #include "rt_config.h" diff -urN a/common/cmm_wpa.c b/common/cmm_wpa.c --- a/common/cmm_wpa.c 2013-09-16 23:03:08.000000000 +0900 +++ b/common/cmm_wpa.c 2015-03-07 15:15:54.736136634 +0900 @@ -1802,17 +1802,17 @@ Return Value: Note: - Output * KDF-Length (K, label, Context) where + Output \A1\F6 KDF-Length (K, label, Context) where Input: K, a 256-bit key derivation key label, a string identifying the purpose of the keys derived using this KDF Context, a bit string that provides context to identify the derived key Length, the length of the derived key in bits Output: a Length-bit derived key - result * "" - iterations * (Length+255)/256 + result \A1\F6 "" + iterations \A1\F6 (Length+255)/256 do i = 1 to iterations - result * result || HMAC-SHA256(K, i || label || Context || Length) + result \A1\F6 result || HMAC-SHA256(K, i || label || Context || Length) od return first Length bits of result, and securely delete all unused bits @@ -2480,7 +2480,7 @@ UCHAR PrimaryRsnie; BOOLEAN bMixCipher = FALSE; /* indicate the pairwise and group cipher are different*/ UCHAR p_offset; - WPA_MIX_PAIR_CIPHER FlexibleCipher = MIX_CIPHER_NOTUSE; /* it provide the more flexible cipher combination in WPA-WPA2 and TKIPAES mode*/ + WPA_MIX_PAIR_CIPHER FlexibleCipher = WPA_TKIPAES_WPA2_TKIPAES; /* it provide the more flexible cipher combination in WPA-WPA2 and TKIPAES mode*/ rsnielen_cur_p = NULL; rsnielen_ex_cur_p = NULL; diff -urN a/common/mlme.c b/common/mlme.c --- a/common/mlme.c 2013-09-16 23:03:08.000000000 +0900 +++ b/common/mlme.c 2015-03-07 15:15:54.746136544 +0900 @@ -535,8 +535,8 @@ #endif /* RALINK_ATE */ /* for performace enchanement */ NdisZeroMemory(&pAd->RalinkCounters, - (UINT32)&pAd->RalinkCounters.OneSecEnd - - (UINT32)&pAd->RalinkCounters.OneSecStart); + (ULONG)&pAd->RalinkCounters.OneSecEnd - + (ULONG)&pAd->RalinkCounters.OneSecStart); return; } diff -urN a/common/rtusb_dev_id.c b/common/rtusb_dev_id.c --- a/common/rtusb_dev_id.c 2013-09-16 23:03:08.000000000 +0900 +++ b/common/rtusb_dev_id.c 2015-03-07 15:15:54.746136544 +0900 @@ -36,8 +36,9 @@ /* module table */ USB_DEVICE_ID rtusb_dev_id[] = { #ifdef MT76x0 + {USB_DEVICE(0x2019,0xAB31)}, /* GW-450D */ {USB_DEVICE(0x148F,0x7610)}, /* MT7610U */ - {USB_DEVICE(0x0E8D,0x7610)}, /* MT7610U */ + {USB_DEVICE(0x13B1,0x003E)}, /* MT7610U */ {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7630, 0xff, 0x2, 0xff)}, /* MT7630U */ {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7650, 0xff, 0x2, 0xff)}, /* MT7650U */ #endif diff -urN a/conf/RT2870STA.dat b/conf/RT2870STA.dat --- a/conf/RT2870STA.dat 2013-09-16 23:03:08.000000000 +0900 +++ b/conf/RT2870STA.dat 2015-03-07 15:15:54.756136455 +0900 @@ -4,9 +4,9 @@ CountryRegionABand=7 CountryCode= ChannelGeography=1 -SSID=11n-AP +SSID= NetworkType=Infra -WirelessMode=5 +WirelessMode=8 EfuseBufferMode=0 Channel=0 BeaconPeriod=100 @@ -17,10 +17,10 @@ FragThreshold=2346 TxBurst=1 PktAggregate=0 -WmmCapable=1 +WmmCapable=0 AckPolicy=0;0;0;0 -AuthMode=OPEN -EncrypType=NONE +AuthMode=WPA2PSK +EncrypType=AES WPAPSK= DefaultKeyID=1 Key1Type=0 diff -urN a/contributors.txt b/contributors.txt --- a/contributors.txt 1970-01-01 09:00:00.000000000 +0900 +++ b/contributors.txt 2015-03-07 15:15:54.756136455 +0900 @@ -0,0 +1 @@ +Sanjit Rath diff -urN a/include/mcu/mt7650_firmware.h b/include/mcu/mt7650_firmware.h --- a/include/mcu/mt7650_firmware.h 2013-09-16 23:24:08.000000000 +0900 +++ b/include/mcu/mt7650_firmware.h 2015-03-07 15:25:46.590039797 +0900 @@ -1,28 +1,5 @@ -/* - ************************************************************************* - * Ralink Tech Inc. - * 5F., No.36, Taiyuan St., Jhubei City, - * Hsinchu County 302, - * Taiwan, R.O.C. - * - * (c) Copyright 2002-2010, Ralink Technology, Inc. - * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - *************************************************************************/ +/* AUTO GEN PLEASE DO NOT MODIFY IT */ +/* AUTO GEN PLEASE DO NOT MODIFY IT */ UCHAR MT7650_FirmwareImage[] = { diff -urN a/include/os/rt_linux.h b/include/os/rt_linux.h --- a/include/os/rt_linux.h 2013-09-16 23:03:08.000000000 +0900 +++ b/include/os/rt_linux.h 2015-03-07 15:15:54.776136276 +0900 @@ -277,8 +277,8 @@ typedef struct _OS_FS_INFO_ { - int fsuid; - int fsgid; + kuid_t fsuid; + kgid_t fsgid; mm_segment_t fs; } OS_FS_INFO; @@ -880,11 +880,20 @@ #define SET_OS_PKT_LEN(_pkt, _len) \ (RTPKT_TO_OSPKT(_pkt)->len) = (_len) + +#ifdef NET_SKBUFF_DATA_USES_OFFSET +#define GET_OS_PKT_DATATAIL(_pkt) \ + (RTPKT_TO_OSPKT(_pkt)->head + (ULONG)RTPKT_TO_OSPKT(_pkt)->tail) +#define SET_OS_PKT_DATATAIL(_pkt, _start, _len) \ + ((RTPKT_TO_OSPKT(_pkt))->tail) = (ULONG)_start - (ULONG)(RTPKT_TO_OSPKT(_pkt)->head) + (_len) +#else #define GET_OS_PKT_DATATAIL(_pkt) \ (RTPKT_TO_OSPKT(_pkt)->tail) #define SET_OS_PKT_DATATAIL(_pkt, _start, _len) \ - ((RTPKT_TO_OSPKT(_pkt))->tail) = (PUCHAR)((_start) + (_len)) - + ((RTPKT_TO_OSPKT(_pkt))->tail) = (ULONG)((_start) + (_len)) +#endif + + #define GET_OS_PKT_HEAD(_pkt) \ (RTPKT_TO_OSPKT(_pkt)->head) diff -urN a/os/linux/config.mk b/os/linux/config.mk --- a/os/linux/config.mk 2013-09-16 23:03:08.000000000 +0900 +++ b/os/linux/config.mk 2015-03-07 15:15:54.776136276 +0900 @@ -23,12 +23,12 @@ # Support Wpa_Supplicant # i.e. wpa_supplicant -Dralink -HAS_WPA_SUPPLICANT=n +HAS_WPA_SUPPLICANT=y # Support Native WpaSupplicant for Network Maganger # i.e. wpa_supplicant -Dwext -HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n +HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y #Support Net interface block while Tx-Sw queue full HAS_BLOCK_NET_IF=n @@ -207,12 +207,20 @@ HAS_WIFI_P2P_CONCURRENT_FAST_SCAN=n +STA_DRIVER_BUILD := 20141022-1327 + ################################################# CC := $(CROSS_COMPILE)gcc LD := $(CROSS_COMPILE)ld -WFLAGS := -g -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs +ifndef $(WFLAGS) +WFLAGS := -DSTA_DRIVER_BUILD="\"${STA_DRIVER_BUILD}\"" +else +WFLAGS += -DSTA_DRIVER_BUILD="\"${STA_DRIVER_BUILD}\"" +endif + +WFLAGS += -g -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs WFLAGS += -DSYSTEM_LOG_SUPPORT -DRT28xx_MODE=$(RT28xx_MODE) -DCHIPSET=$(MODULE) -DRESOURCE_PRE_ALLOC -DENHANCED_STAT_DISPLAY #WFLAGS += -DFPGA_MODE WFLAGS += -I$(RT28xx_DIR)/include @@ -660,7 +668,7 @@ WFLAGS += -DCONFIG_CSO_SUPPORT -DCONFIG_TSO_SUPPORT endif -CHIPSET_DAT = 2860 +CHIPSET_DAT = 2870 endif ifneq ($(or $(findstring mt7662e,$(CHIPSET)),$(findstring mt7612e,$(CHIPSET))),) diff -urN a/os/linux/rt_linux.c b/os/linux/rt_linux.c --- a/os/linux/rt_linux.c 2013-09-16 23:03:08.000000000 +0900 +++ b/os/linux/rt_linux.c 2015-03-07 15:15:54.786136186 +0900 @@ -497,9 +497,9 @@ MEM_DBG_PKT_ALLOC_INC(skb); skb_reserve(skb, 2); - NdisMoveMemory(skb->tail, pHeader802_3, HdrLen); + NdisMoveMemory(GET_OS_PKT_DATATAIL(skb), pHeader802_3, HdrLen); skb_put(skb, HdrLen); - NdisMoveMemory(skb->tail, pData, DataSize); + NdisMoveMemory(GET_OS_PKT_DATATAIL(skb), pData, DataSize); skb_put(skb, DataSize); skb->dev = pNetDev; /*get_netdev_from_bssid(pAd, FromWhichBSSID); */ pPacket = OSPKT_TO_RTPKT(skb); @@ -650,7 +650,7 @@ pClonedPkt->dev = pRxPkt->dev; pClonedPkt->data = pData; pClonedPkt->len = DataSize; - pClonedPkt->tail = pClonedPkt->data + pClonedPkt->len; + SET_OS_PKT_DATATAIL(pClonedPkt, pClonedPkt->data, pClonedPkt->len); ASSERT(DataSize < 1530); } return pClonedPkt; @@ -695,7 +695,7 @@ pOSPkt->dev = pNetDev; pOSPkt->data = pData; pOSPkt->len = DataSize; - pOSPkt->tail = pOSPkt->data + pOSPkt->len; + SET_OS_PKT_DATATAIL(pOSPkt, pOSPkt->data, pOSPkt->len); /* copy 802.3 header */ @@ -1105,9 +1105,10 @@ pOSFSInfo->fsuid = current->fsuid; pOSFSInfo->fsgid = current->fsgid; current->fsuid = current->fsgid = 0; + #else pOSFSInfo->fsuid = current_fsuid(); - pOSFSInfo->fsgid = current_fsgid(); + pOSFSInfo->fsgid = current_fsgid(); #endif pOSFSInfo->fs = get_fs(); set_fs(KERNEL_DS); diff -urN a/os/linux/usb_main_dev.c b/os/linux/usb_main_dev.c --- a/os/linux/usb_main_dev.c 2013-09-16 23:03:08.000000000 +0900 +++ b/os/linux/usb_main_dev.c 2015-03-07 15:15:54.786136186 +0900 @@ -39,7 +39,7 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Paul Lin
"); MODULE_DESCRIPTION("RT2870 Wireless Lan Linux Driver"); - +MODULE_LICENSE("GPL"); #ifdef CONFIG_STA_SUPPORT #ifdef MODULE_VERSION MODULE_VERSION(STA_DRIVER_VERSION); diff -urN a/sta/sta_cfg.c b/sta/sta_cfg.c --- a/sta/sta_cfg.c 2013-09-16 23:03:08.000000000 +0900 +++ b/sta/sta_cfg.c 2015-03-07 15:15:54.796136097 +0900 @@ -5398,7 +5398,7 @@ wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */ break; case SHOW_DRVIER_VERION: - snprintf(extra, size, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ ); + snprintf(extra, size, "Driver version-%s, %s\n", STA_DRIVER_VERSION, STA_DRIVER_BUILD ); wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */ break; #ifdef DOT11_N_SUPPORT
$ tar xvjf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2なお、文字コードの関係で一部リジェクトされ、手修正が必要になる場合がある。
$ cd mt7610u_wifi_sta_v3002_dpo_20130916/
$ patch -p1 < ../mediatek_mt7610u_sta_driver_for_3.18.8.patch
$ make
$ sudo make install
最後に冒頭のメーカ(プラネックス)記事を参考にネットワーク設定すれば良い。
Raspberry Pi 2 (raspbian) Kodi+iptvsimpleでメディアセンター [Raspberry Pi]
注文した「Raspberry Pi 2」が手元に届いたので早速raspbianを導入、更にKodi+iptvsimpleをインストールしメディアセンターとして使用してみた。
最初にkodiのインストール、
ちなみにOSMC(Raspbmcの後継)、OpenELEC(ver.5.0.3)とiptvsimpleでライブ視聴を試してみたがこちらの方では動作させることができなかった。
このままではホーム画面の電源ボタンでは「終了」メニューしか表示されないので、必要であれば以下で「シャットダウン」メニューなどを追加すると良いだろう。
最初にkodiのインストール、
$ sudo vi /etc/apt/sources.list.d/mene.listこの時ユーザー「kodi」も新規追加される。次は電源ONでKodiが自動起動するよう設定、
deb http://archive.mene.za.net/raspbian wheezy contrib
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
$ sudo apt-get update
$ sudo apt-get install kodi
$ sudo vi /etc/default/kodiこれでOS再起動でKodiが立ち上がってくるが、このままではキーボード等の入力を受け付けてくれなかったので、以下を設定した。
# Set this to 1 to enable startup
ENABLED=1
# The user to run Kodi as
USER=kodi
・・・・・・・・・・・・
$ sudo vi /etc/group立ち上がってきたKodiの日本語化は以前のこの記事を参考に。次にiptvsimpleをインストール、
・・・・・・・・・・・・
netdev:x:105:pi
input:x:999:pi,kodi
messagebus:x:106:
・・・・・・・・・・・・
$ sudo reboot
$ sudo apt-get install kodi-pvr-iptvsimpleiptvsimpleの設定の方も以前のこの記事を参考に。
ちなみにOSMC(Raspbmcの後継)、OpenELEC(ver.5.0.3)とiptvsimpleでライブ視聴を試してみたがこちらの方では動作させることができなかった。
このままではホーム画面の電源ボタンでは「終了」メニューしか表示されないので、必要であれば以下で「シャットダウン」メニューなどを追加すると良いだろう。
$ sudo su【2015.3.21追記】これで上手く行かない場合は、最終行を「no」にして試してみる。
# vi /var/lib/polkit-1/localauthority/50-local.d/kodi.pkla
[Actions for xbmc user]
Identity=unix-user:kodi
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes
Archlinux 固定IPの設定 [Hummingboard]
他のPCからのリモート(ssh)操作にはDHCPだと何かと不便なので固定IPにした。Archlinuxのネットワーク設定方法にはsystemd、netctl、systemd-networkdなど幾つかあるようで、ここではsystemd-netwokdで行った。最初にネットワークのデフォルト状態である。
# ip aipコマンドで確認できたデバイス名(eth0)のNICに対して「eth0.network」の中で「DHCP=both(DHCPv4とv6の両方)」に設定されおり、結果としてDHCPサーバから「192.168.1.181」が割り振られている。これを固定IPに設定するには「eth0.network」を以下のように変更してやれば良い。
・・・・・・・・・・・・・・・・・・・
2: eth0:mtu 1500 qdisc pfifo_fast state UP g0
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.181/24 brd 192.168.1.255 scope global dynamic eth0
・・・・・・・・・・・・・・・・・・・
# cat /etc/systemd/network/eth0.network
[Match]
Name=eth0
[Network]
DHCP=both
# systemctl is-enabled systemd-networkd
enabled
# vi /etc/systemd/network/eth0.network固定IPアドレス(ここでは192.168.1.41)で立ち上がっているはずである。
[Match]
Name=eth0
[Network]
DHCP=false
Address=192.168.1.41/24
Gateway=192.168.1.1
DNS=192.168.1.1
# ip addr flush dev eth0
# ip a
・・・・・・・・・・・・・・・・・・・
2: eth0:mtu 1500 qdisc pfifo_fast state UP gr0
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
・・・・・・・・・・・・・・・・・・・
# systemctl restart systemd-network
# ip a
・・・・・・・・・・・・・・・・・・・
2: eth0:mtu 1500 qdisc pfifo_fast state UP g0
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 92.168.1.41/24 brd 192.168.1.255 scope global dynamic eth0
・・・・・・・・・・・・・・・・・・・
# systemctl reboot
Archlinux+xbmcの導入 [Hummingboard]
HummingBoard-i2eXへ何とかArchlinuxをインストールできたので次にxbmcを導入してみた。手順は「Archlinuxarm official + xbmc (imx6)」を参考にした。
# pacman -Syuこれでお馴染みのxbmcの画面が立ち上がって来る筈。ここでxbmcより先に「polkit」をインストールしているが、後ではxbmc終了メニューで「システム終了、電源を切る」などが表示されなかった。あと、この「xbmc」はユーザ名「xbmc」、ホームディレクトリは「/var/lib/xbmc/」で立ち上がってくるので、
# pacman -S polkit
# pacman -S xbmc-imx-git libfslvpuwrap libcec-imx6 gpu-viv-bin-mx6q-fb firmware-imx imx-vpu
# systemctl start xbmc
# systemctl enable xbmc
# systemctl reboot
# cat /usr/lib/systemd/system/xbmc.service設定ファイル類は「/var/lib/xbmc/.xbmc/」配下になるので、例えば日本語フォントを入替えたければ
[Unit]
Description = Starts an instance of XBMC
After = remote-fs.target
[Service]
User = xbmc
Group = xbmc
Type = simple
ExecStart = /usr/bin/runxbmc
Restart = on-failure
[Install]
WantedBy = multi-user.target
# grep xbmc /etc/passwd
xbmc:x:1000:1000::/var/lib/xbmc:/bin/bash
# mkdir /var/lib/xbmc/.xbmc/media/Fontsのようにすれば良い。
# cp migmix-1p-regular.ttf /var/lib/xbmc/.xbmc/media/Fonts/arial.ttf
# chown xbmc.xbmc -R /var/lib/xbmc/.xbmc/media/Fonts
Archlinuxのインストール [Hummingboard]
HummingBoard-i2eXが届いた。早速、Archlinuxをインストール、他にXBian、OpenELEC、Ubuntu14.04等も試したが、結果としてArchlinuxを選択した。ただArchlinux、U-boot自体、初めてなのでインストールから苦戦を強いられ、使いこなすには相当時間がかかりそう。やっとインストールできたので、取り敢えずその手順を。
(1)取り敢えずの手順
インストールは「CuBox-i | Arch Linux ARM」や「ArchLinux - CuBox-i Wiki Pages」を参考にした。後者は前者の手順をスクリプトにより自動化したもので基本は同じ、いづれでもOSまで起動出来なかった(9/20追記:2014-09-12版ArchLinuxARM-imx6-cubox-latest.tar.gzで前者手順で正常OS起動できたので、以下記事中のSPL、u-boot.img入替え不要)。やったのは後者の「make-sdcard」スクリプトによる手順。(作業はUbuntu 14.04 PC上で)
まずクロスコンパイル環境のインストールと環境変数の設定。(「Building the kernel and u-boot for the CuBox-i and the HummingBoard - CuBox-i Wiki Pages」を参考にした。)
(2)もう一つの手順。多分、こちらの方が正解に近いかも..(追記)
「SPL」、「u-boot.img」の2ファイルは古いものへ差替えずにそのまま。代りに「boot.scr」を新規作成、以下がその作成手順。
現状、Archlinux+XBMC(+iptvsimple)+S880で"Media Center"として使用中だがCPU、GPUパワーを実感している。余り期待していなかったが動作も思っていたより安定している、安定性の方はRaspbmcほどではないと思うが。
それにしても試行錯誤、しばらくはこの繰り返しですね。
(1)取り敢えずの手順
インストールは「CuBox-i | Arch Linux ARM」や「ArchLinux - CuBox-i Wiki Pages」を参考にした。後者は前者の手順をスクリプトにより自動化したもので基本は同じ
$ wget http://archlinuxarm.org/os/ArchLinuxARM-imx6-cubox-latest.tar.gz本来であればこのmicroSDで正常に立ち上がる筈だが、結果として作成された一部フィアルを差替える必要があった。具体的には、このmicroSD内のBoot配下の
$ wget https://www.dropbox.com/s/e0my9z0tq644wam/make-sdcard
$ chmod +x make-sdcard
$ sudo fdisk -l # 作成するSDカードのドライブを確認
$ sudo ./make-sdcard /dev/sdX ArchLinuxARM-imx6-cubox-latest.tar.gz
$ ls -l /media/hoge/Boot「SPL」、「u-boot.img」の2ファイルを以下で作成した古いものへ置き換えた。
合計 6771
-rw-r--r-- 1 hoge hoge 31744 8月 11 20:08 SPL
-rw-r--r-- 1 hoge hoge 43332 8月 11 21:36 imx6dl-cubox-i.dtb
-rw-r--r-- 1 hoge hoge 42379 8月 11 21:36 imx6dl-hummingboard.dtb
-rw-r--r-- 1 hoge hoge 43789 8月 11 21:36 imx6q-cubox-i.dtb
-rw-r--r-- 1 hoge hoge 227204 8月 11 20:08 u-boot.img
-rw-r--r-- 1 hoge hoge 6543872 8月 11 21:36 zImage
まずクロスコンパイル環境のインストールと環境変数の設定。(「Building the kernel and u-boot for the CuBox-i and the HummingBoard - CuBox-i Wiki Pages」を参考にした。)
$ sudo apt-get install gcc-arm-linux-gnueabi次に「u-boot」のソース(gitリポ)取り込みとコンパイル。
$ export ARCH=arm
$ export CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-
$ git clone https://github.com/SolidRun/u-boot-imx6.git「git checkout b203583」で2014年3月4日コミットされたソースに戻している。あとは、
$ cd u-boot-imx6
$ git checkout b203583
$ make mx6_cubox-i_config
$ make
$ ls -l SPL u-boot.img
-rw-rw-r-- 1 hoge hoge 39936 8月 16 23:51 SPL
-rw-rw-r-- 1 hoge hoge 298420 8月 16 23:51 u-boot.img
$ sudo cp SPL u-boot.img /media/hoge/Boot/でmicroSDへ上書きコピー。このSDをHummingboard-i2eXへ装着、やっとArchlinuxのログインプロンプトを表示させることが。
Arch Linux 3.10.30-27-ARCHこのあと、コンパイル済みのものが以下のところにあることが判明、
alarm login: root
Password: (root)
[root@alarm ~]# uname -r
3.10.30-27-ARCH
$ wget https://www.dropbox.com/sh/gn17qpuislhpnvo/AAAj-gyaLMginDIlqDY4CDn6a/busybox.tar.xzたまたま見つけたとはいえ、こちらの方が断然お手軽。
$ mkdir tmp/
$ tar xvfJ busybox.tar.xz -C temp/
$ ls -l temp/u-boot/
合計 356
-rw-r--r-- 1 hoge hoge 39936 3月 4 13:46 SPL
-rw-r--r-- 1 hoge hoge 79 2月 24 09:34 serialcon.txt
-rw-r--r-- 1 hoge hoge 297652 3月 4 13:46 u-boot.img
.............................................................................
(2)もう一つの手順。多分、こちらの方が正解に近いかも..(追記)
「SPL」、「u-boot.img」の2ファイルは古いものへ差替えずにそのまま。代りに「boot.scr」を新規作成、以下がその作成手順。
$ sudo apt-get install u-boot-toolsこれでもArchlinuxのログインプロンプトを表示させることができた。
$ cd /media/hoge/Boot/
$ sudo vi boot.txt
setenv bootargs 'root=/dev/mmcblk0p2 console=ttymxc0,115200
video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32'
load mmc 0:1 0x18000000 imx6q-cubox-i.dtb
fatload mmc 0:1 0x10800000 zImage
bootz 0x10800000 - 0x18000000
$ sudo mkimage -A arm -O linux -T script -C none -n "U-Boot commands" -d boot.txt boot.scr
現状、Archlinux+XBMC(+iptvsimple)+S880で"Media Center"として使用中だがCPU、GPUパワーを実感している。余り期待していなかったが動作も思っていたより安定している、安定性の方はRaspbmcほどではないと思うが。
それにしても試行錯誤、しばらくはこの繰り返しですね。
「MyGica S880」(USB ISDB-T)+「recdvb」でリアル視聴 [録画・再生]
久々の更新、ほぼ一年間の空白...。
南米向けUSB地デジチュナー「MyGica S880」(写真左)が少し安くなっていたのでつい買ってしまった。同じUSBの「MyGica S870」に比べると格段に小さいので、RaspberryPi用ということで。
早速、「Raspbmc+iptvsimple」(過去記事参照)へ導入してみた。
・アンテナコネクタ
同梱されてきたのは「PALメス-MCXオス」(写真中)、南米向けなので当然と言えば当然なのだが、日本標準はF型になるので「Fメス-MCXオス」(製品名:F7-MCX【COMON製】)(写真右)を別に購入した。ちなみに地デジチュナー側は「MCXメス」になっている。
・「Raspbmc+iptvsimple」でリアル視聴
Raspbmc(この時点の最新版)へ「S880」を挿入すれば何もせずとも認識。
視聴ツールはカーネル標準デバイス(DVB版)対応の「recpt1」とも言うべき「recdvb」(「recdvb (PX-S1UD用recpt1)の公開・インストール」 『Sat's space』)を導入した。個人的に久しく待望していたもの、横道になるが録画ソフト「epgrec(UNA)」で若干の設定ファイル変更だけでそのまま使えるようになるのでは。
話を戻してコンパイルは以下手順で。ただし「libarib25」や「pcsclite-dev」などは導入済が前提になるが、ここを参考にすると良いかもしれない)
南米向けUSB地デジチュナー「MyGica S880」(写真左)が少し安くなっていたのでつい買ってしまった。同じUSBの「MyGica S870」に比べると格段に小さいので、RaspberryPi用ということで。
早速、「Raspbmc+iptvsimple」(過去記事参照)へ導入してみた。
・アンテナコネクタ
同梱されてきたのは「PALメス-MCXオス」(写真中)、南米向けなので当然と言えば当然なのだが、日本標準はF型になるので「Fメス-MCXオス」(製品名:F7-MCX【COMON製】)(写真右)を別に購入した。ちなみに地デジチュナー側は「MCXメス」になっている。
・「Raspbmc+iptvsimple」でリアル視聴
Raspbmc(この時点の最新版)へ「S880」を挿入すれば何もせずとも認識。
$ uname -rファームウェアが無いと言われるので付属CDから以下手順でインストール。一旦ドライバをWindowsへインストールし、出来上がった「isdbt-rio.inp」をRaspbmcへコピー。
3.12.21
$ lsusb
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Bus 001 Device 005: ID 2019:ed17 PLANEX GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 006: ID 187f:0600 Siano Mobile Silicon
$ ls /dev/dvb/
adapter0
$ dmesg
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
usb 1-1.2: New USB device found, idVendor=187f, idProduct=0600
usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.2: Product: MDTV Receiver
usb 1-1.2: Manufacturer: MDTV Receiver
smscore_load_firmware_from_file: line: 1168: failed to open firmware file "isdbt_rio.inp"
DVB: registering new adapter (Siano Rio Digital Receiver)
usb 1-1.2: DVB: registering adapter 0 frontend 0 (Siano Mobile Digital MDTV Receiver)...
$ sudo cp isdbt_rio.inp /lib/firmware/一旦Windowsへインストールするのが面倒な方は以下の方法でも可能。
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip前者とファイルサイズは異なっていたが自身の環境では問題なく動作している。気になる方は前者の方法が無難。
$ unzip PX-S1UD_driver_Ver.1.0.1.zip
$ sudo cp PX-S1UD_driver_Ver.1.0.1/x86/i386/isdbt_rio.inp /lib/firmware/
視聴ツールはカーネル標準デバイス(DVB版)対応の「recpt1」とも言うべき「recdvb」(「recdvb (PX-S1UD用recpt1)の公開・インストール」 『Sat's space』)を導入した。個人的に久しく待望していたもの、横道になるが録画ソフト「epgrec(UNA)」で若干の設定ファイル変更だけでそのまま使えるようになるのでは。
話を戻してコンパイルは以下手順で。ただし「libarib25」や「pcsclite-dev」などは導入済が前提になるが、ここを参考にすると良いかもしれない)
$ sudo apt-get install build-essential automake libtoolこれで試しに
$ wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.2.0.tgz
$ tar xvfz recdvb-1.2.0.tgz
$ cd recdvb-1.2.0/
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install
$ recdvb --b25 --sid hd --strip 30 27 test.tsとして出来たtest.tsが再生できればOK、ちなみに自身は他マシン(ubuntu)で再生して確認した。
$ scp test.ts user_name@xxx.xxx.xxx.xxx: # raspbmc側正常動作が確認できたら、httpデーモンで起動しておけばraspbmcの「ライブTV」でリアル視聴が可能となる。(Raspbmc「ライブTV」の設定は過去記事を参照)
$ cvlc test.ts # ubuntu側
$ recdvb --b25 --sid hd --strip --http 8800これでRaspberry PiがStandaloneな環境で「ライブTV」が一様、可能となるが、このままでは電流不足でセルフパワーUSBハブが別に必要だったりする。この辺も先人達の成果を参考にさせてもらったので、後日紹介したい。(新型の「Raspberry Pi B+」では電源周りが強化されたようでこの辺の課題は解消されているのかも知れないが、既に「Humming Board」を注文してしまったので、これはこれとして暫くは使い続けることに..)
$ cat iptv.m3u (playlistの例)
#EXTM3U
#EXTINF:-1 tvg-id="GR_1024" tvg-logo="GR_1024.png" group-title="地上デジタル",NHK総合
http://localhost:8800/27
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
XBMC(Raspbmc)でRadikoを聴く [録画・再生]
前記事でXBMC(Raspbmc)「ライブTV」メニューからTVのリアル視聴ができるようになったので、次はラジオをもということで、Radikoアドオンをインストールしてみたが、起動してみると以下のエラーで動作せず。
・エラー「スクリプトが失敗:plugin.audio.radiko」
少してこずりながらも、ログから色々調べてみると、Raspbmcでは「Python Imaging Library」を明示的にインストールしてやる必要があった。
自身はインストールを少しハショッてアドオンzipファイルを直接ダウンロード・インストールしたが、Radiko本家「XBMCを使ってみよう:Radiko」を参考に日本語アドオンリポジトリを追加、そこからインストールする方がバージョンアップされる際を考えると良いだろう。
1.アドオン「plugin.audio.radiko」の取得 【取得先URL修正:2014.01.03】
・インストール
「システム」→「設定」→「アドオン」→「zipファイルからインストール」→「ホームフォルダ」
→「plugin.audio.radiko-0.0.12.zip」を選択
・ファンアート機能の無効化【追記:2014.01.03】
「システム」→「設定」→「アドオン」→「有効なアドオン」→「ミュージックアドオン」→「Radiko」
→「設定」→「ファンアート機能(http://www...)」のチェックを外す→「OK」
・Radikoを起動
「ミュージック」→「アドオン」→「Radiko」
これで局名が表示されるので聴きたい局を選択すれば、RaspbmcでRadikoが聴けるようになる筈だ。
・エラー「スクリプトが失敗:plugin.audio.radiko」
少してこずりながらも、ログから色々調べてみると、Raspbmcでは「Python Imaging Library」を明示的にインストールしてやる必要があった。
自身はインストールを少しハショッてアドオンzipファイルを直接ダウンロード・インストールしたが、Radiko本家「XBMCを使ってみよう:Radiko」を参考に日本語アドオンリポジトリを追加、そこからインストールする方がバージョンアップされる際を考えると良いだろう。
1.アドオン「plugin.audio.radiko」の取得 【取得先URL修正:2014.01.03】
$ ssh pi@192.168.xx.xx #他PCからリモートでRaspbmcへ2.アドオン「plugin.audio.radiko」のインストール
pi@192.168.xx.xx's password: (raspberry)←パスワードを入力
$ sudo apt-get install python-imaging # 「Python Imaging Library」をインストール
$ wget https://github.com/xbmc-now/japanese-xbmc-addons/blob/master/repo/plugin.audio.radiko/plugin.audio.radiko-0.0.12.zip?raw=true -O plugin.audio.radiko-0.0.12.zip
・インストール
「システム」→「設定」→「アドオン」→「zipファイルからインストール」→「ホームフォルダ」
→「plugin.audio.radiko-0.0.12.zip」を選択
・ファンアート機能の無効化【追記:2014.01.03】
「システム」→「設定」→「アドオン」→「有効なアドオン」→「ミュージックアドオン」→「Radiko」
→「設定」→「ファンアート機能(http://www...)」のチェックを外す→「OK」
・Radikoを起動
「ミュージック」→「アドオン」→「Radiko」
これで局名が表示されるので聴きたい局を選択すれば、RaspbmcでRadikoが聴けるようになる筈だ。
XBMC(Raspbmc)「ライブTV」でリアル視聴 [録画・再生]
XBMC(Raspbmc)の「ライブTV」機能とサーバ側PT2(又はKTV-FSUSB2)でリアル視聴の環境を作成してみた。Raspberry Pi(Raspbmc)と録画サーバ(Ubuntu server 12.04、epgrec+PT2x2)のそれぞれへの設定は以下の手順で行った。
1.アドオン「xbmc-addon-iptvsimple」の作成(Raspbmc)
TSデータから「epgdump」(こちらのSTZ版を使用)により作成した。「epgdump」にはバリエーションがあるが、それにより「channel id="XX"」のフォーマットが異なっているのでプレイリスト作成時は要注意。
3.プレイリスト(M3U)の作成(録画サーバ)
取得したEPG(xmltv.xml)から各局「channel id」の値を以下「tvg-id」へ設定する。M3Uフォーマットの詳細は「IPTV Simple Home」を参照。
とりあえずホームフォルダへコピー。
httpデーモンは、呼ばれたホストの名前解決に失敗するとその旨メッセージを出し終了してしまう仕様なので、予めRaspbmcをhostsファイルに登録しておく。固定IPの方が何かと便利。
・インストール
「システム」→「設定」→「アドオン」→「zipファイルからインストール」→「ホームフォルダ」
→「xbmc-addon-iptvsimple」フォルダから「pvr.iptvsimple.1.6.1.zip」を選択
→「PVR IPTV Simple Client アドオンが有効になりました」でインストール完了
・設定(プレイリスト、EPGファイルの指定)
同様に「アドオン」から「有効なアドオン」→「PVRクライアント」→「IPTV Simple Client」→「設定」
「General」タブ → 「File Location」 → 「Local Path(include Local Network)」
「M3U Play List Path」 → 「/home/pi/iptv.m3u」
「EPG Settings」タブ → 「File Location」 → 「Local Path(include Local Network)」
「XMLTV Path」 → 「/home/pi/xmltv.xml」
7.「ライブTV」の設定、PVR・EPGの初期設定(Raspbmc)
「システム」→「設定」→「ライブTV」→「一般」→「LCD有効」をオン
これでプレイリスト、EPGファイルからそれぞれのデータベースが読み込まれ、トップメニューに「ライブTV」メニューが追加され、これでライブ視聴が可能となる。
なお修正したプレイリスト、EPGデータを即反映するにはデータベースを一旦リセットしてやれば自動更新される。
「システム」→「設定」→「ライブTV」
・「一般」→「PVRデータベースのリセット」
・「電子番組ガイド」→「EPGデータベースのリセット」
操作の方は専らAndroid端末(Yatse, the XBMC Remote)から行なっているが、MediaCenterとして便利に使えている。
1.アドオン「xbmc-addon-iptvsimple」の作成(Raspbmc)
$ ssh pi@192.168.xx.xx #他PCからリモートでRaspbmcへ2.番組情報(EPG)の取得(録画サーバ)
pi@192.168.xx.xx's password: (raspberry)←パスワードを入力
$ sudo apt-get install build-essential automake git libtool ca-certificates
$ git clone https://github.com/afedchin/xbmc-addon-iptvsimple
$ cd xbmc-addon-iptvsimple
$ git checkout frodo
$ sh ./autogen.sh
$ ./configure
$ make dist-zip
$ ls *.zip
pvr.iptvsimple.1.6.1.zip
pvr.iptvsimple.1.9.3.zip
TSデータから「epgdump」(こちらのSTZ版を使用)により作成した。「epgdump」にはバリエーションがあるが、それにより「channel id="XX"」のフォーマットが異なっているのでプレイリスト作成時は要注意。
確認は地上デジタルのみ他は未確認です。#!/bin/sh
#
epg_xml="xmltv.xml"
channel_gr="27 26 25 24 22 23 21 16"
#channel_bs="101"
#channel_cs1="CS8"
#channel_cs2="CS24"
rec_sec=60
#rec_sec_bs=180
#rec_sec_cs=120
outdir="/home/hoge/gr_EPG/"
EPGDUMP="/usr/local/bin/epgdump"
RECODER="/usr/local/bin/recpt1 --b25 --strip --sid epg"
#RECODER="/usr/local/bin/recfsusb2n --b25 --sid epg"
#
# EPG (GR)
for channel_no in ${channel_gr}
do
$RECODER ${channel_no} $rec_sec ${outdir}epgtemp${channel_no}.ts
if [ ${channel_no} = "27" ] ; then
$EPGDUMP ${channel_no} ${outdir}epgtemp${channel_no}.ts - | \
sed -e '$d' > ${outdir}${epg_xml}
continue
fi
$EPGDUMP ${channel_no} ${outdir}epgtemp${channel_no}.ts - | \
sed -e '1,4d' -e '$d' >> ${outdir}${epg_xml}
done
#
# EPG(BS)
#$RECODER ${channel_bs} $rec_sec_bs ${outdir}epgtemp${channel_bs}.ts
#$EPGDUMP /BS ${outdir}epgtemp${channel_bs}.ts - | \
#sed -e '1,4d' -e '$d' >> ${outdir}${epg_xml}
#
# EPG(CS)
#$RECODER ${channel_cs1} $rec_sec_cs ${outdir}epgtemp${channel_cs1}.ts
#$EPGDUMP /CS ${outdir}epgtemp${channel_cs1}.ts - | \
#sed -e '1,4d' -e '$d' >> ${outdir}${epg_xml}
#$RECODER ${channel_cs2} $rec_sec_cs ${outdir}epgtemp${channel_cs2}.ts
#$EPGDUMP /CS ${outdir}epgtemp${channel_cs2}.ts - | \
#sed -e '1,4d' -e '$d' >> ${outdir}${epg_xml}
#
echo '</tv>' >> ${outdir}${epg_xml}
3.プレイリスト(M3U)の作成(録画サーバ)
取得したEPG(xmltv.xml)から各局「channel id」の値を以下「tvg-id」へ設定する。M3Uフォーマットの詳細は「IPTV Simple Home」を参照。
$ vi iptv.m3u4.番組情報、プレイリストをRaspbmcへコピー(録画サーバ)
#EXTM3U
#EXTINF:-1 tvg-id="GR_1024" group-title="地上デジタル",NHK総合
http://(録画サーバIP):8800/27
#EXTINF:-1 tvg-id="GR_1032" group-title="地上デジタル",NHKEテレビ
http://(録画サーバIP):8800/26
...
...
#EXTINF:-1 tvg-id="GR_23609" group-title="地上デジタル",東京MX
http://(録画サーバIP):8800/16
とりあえずホームフォルダへコピー。
$ scp iptv.m3u gr_EPG/xmltv.xml pi@192.168.xx.xx:5.「recpt1」httpデーモン起動(録画サーバ)
httpデーモンは、呼ばれたホストの名前解決に失敗するとその旨メッセージを出し終了してしまう仕様なので、予めRaspbmcをhostsファイルに登録しておく。固定IPの方が何かと便利。
$ recpt1 --b25 --sid hd --strip --http 88006.アドオン「xbmc-addon-iptvsimple」のインストール、設定(Raspbmc)
(又は$ recfsusb2n --b25 --sid hd --http 8800)
$ vi /etc/hosts
127.0.0.1 localhost
・・・・・
192.168.xx.xx raspi #ホスト名はお好きなように
・インストール
「システム」→「設定」→「アドオン」→「zipファイルからインストール」→「ホームフォルダ」
→「xbmc-addon-iptvsimple」フォルダから「pvr.iptvsimple.1.6.1.zip」を選択
→「PVR IPTV Simple Client アドオンが有効になりました」でインストール完了
・設定(プレイリスト、EPGファイルの指定)
同様に「アドオン」から「有効なアドオン」→「PVRクライアント」→「IPTV Simple Client」→「設定」
「General」タブ → 「File Location」 → 「Local Path(include Local Network)」
「M3U Play List Path」 → 「/home/pi/iptv.m3u」
「EPG Settings」タブ → 「File Location」 → 「Local Path(include Local Network)」
「XMLTV Path」 → 「/home/pi/xmltv.xml」
7.「ライブTV」の設定、PVR・EPGの初期設定(Raspbmc)
「システム」→「設定」→「ライブTV」→「一般」→「LCD有効」をオン
これでプレイリスト、EPGファイルからそれぞれのデータベースが読み込まれ、トップメニューに「ライブTV」メニューが追加され、これでライブ視聴が可能となる。
なお修正したプレイリスト、EPGデータを即反映するにはデータベースを一旦リセットしてやれば自動更新される。
「システム」→「設定」→「ライブTV」
・「一般」→「PVRデータベースのリセット」
・「電子番組ガイド」→「EPGデータベースのリセット」
操作の方は専らAndroid端末(Yatse, the XBMC Remote)から行なっているが、MediaCenterとして便利に使えている。
「vlc-arib」+「MyGica S870」(USB ISDB-T)でリアル視聴 [録画・再生]
南米向けのUSB地デジチュナー「MyGica S870」(ISDB-T)を入手したので早速使ってみた。
環境は以下の通り。
以前から使用しているPT2、KTV-FSUSB2のリアル視聴には「recpt1、recfsusb2nそれぞれのhttp版+VLC」を便利につかわさせて貰ってるが、「vlc-arib」のお陰でDVB版でもVLCから便利に扱えるのは非常にありがたい。これで南米向け製品であってもLinux対応でさえあれば国内でも容易にリアル視聴出来るのでは..。
あと「fuse_b25」(0.4.8)+ubuntu標準「vlc」でも試してみた。結果、上記プレイリストで視聴可能だったが、チャネル変更で時々失敗することがあり、自身の環境では安定性に少し難があった。
環境は以下の通り。
・Ubuntu 13.04(64bit)、GPU(Sandy Bridge内蔵)カーネル標準サポートなので挿入さえすればDVBデバイスとして即認識される。
・ARIB25復号化環境は導入済み
$ ls /dev/dvb/DVBデバイスのリアル視聴にはいくつかの方法があるが、ARIB規格対応「HOME vlc-arib」 (Wiki)を使用してみた。(ついでに「vlc音声切替パッチ」も適用)
adapter0
$ sudo apt-get build-dep vlcパッチのリジェクトは一箇所のみ、適当に手修正したあと上記Wikiの手順でコンパイル。
$ git clone https://github.com/hiranotaka/vlc-arib
$ (git checkout 3bab107) # 最新ソースがコンパイルできない場合はこのソースへ戻す
$ wget http://www3.wazoku.net/2sen/dtvup/source/up0822.zip
$ unzip up0822.zip
$ cd vlc-arib
$ patch -p1 < ../vlc_patches_0.2/asx.diff
$ patch -p1 < ../vlc_patches_0.2/vlc120.diff
$ ./bootstrapあとはWikiを参考にプレイリストを作成し,vlcを起動してやれば
$ ./configure --enable-arib --enable-faad --enable-dvbpsi
$ make -j4
$ vi ~/playlists/tideji.m3uキーボードからのチャネル変更も問題なく、快適にリアル視聴ができた。ちなみにベースとしているVLCバージョンは2.1.0-pre1のようだ。
#EXTM3U
#EXTINF:0,NHK
isdb-t://adapter=0:frequency=557142857
#EXTINF:0,ETV
isdb-t://adapter=0:frequency=55114285
#EXTINF:0,NTV
isdb-t://adapter=0:frequency=545142857
・・・・・・・・・
#EXTINF:0,TOKYO-MX
isdb-t://adapter=0:frequency=491142857
$ ./vlc ~/playlists/tideji.m3u
以前から使用しているPT2、KTV-FSUSB2のリアル視聴には「recpt1、recfsusb2nそれぞれのhttp版+VLC」を便利につかわさせて貰ってるが、「vlc-arib」のお陰でDVB版でもVLCから便利に扱えるのは非常にありがたい。これで南米向け製品であってもLinux対応でさえあれば国内でも容易にリアル視聴出来るのでは..。
あと「fuse_b25」(0.4.8)+ubuntu標準「vlc」でも試してみた。結果、上記プレイリストで視聴可能だったが、チャネル変更で時々失敗することがあり、自身の環境では安定性に少し難があった。
VLCをAndroid端末(Remote for VLC)から操作する [録画・再生]
最近、PCでのTV(PT2/3、KTV-FSUSB2)のリアル視聴には「VLC」を使っている。PC操作しながらのナガラ視聴には小窓で、横になって少し離れた所から視るにはフル画面で...など々便利に使わせて貰っているが、離れた所からのVLC操作は家のWifi経由で「Remote for VLC」をインストールしたAndroid端末(スマホ、Tablet)から行なっている。
設定はVLC、「Remote for VLC」双方に必要であるが、まずPC側VLCについては起動してからメニューバー「ツール(T)」から「設定(P)」を選択し、設定ウィンドウを表示し
「Remote for VLC」の方はGooglePlayから導入することができる。設定は起動した後メニューから「Setting」を選択すると自動的にWifi越しにスキャンを始めるので、PC側のVLCを予め起動しておけば自動検出される。手動で設定するには同様に「Setting」から「Add VLC server」で、ホスト名(又はIPアドレス)及びポート番号(デフォルト8080)を入力すれば良い。
スクリーンショット(Remote for VLC)はPC側のVLCでリアル視聴している時のものですが、これを見てもチャンネル選択、ボリューム調整、フル画面切替などの操作が手元で可能になっていることがわかると思います。この他にも再生ファイルの選択等、色々操作が可能である。
VLCによるリアル視聴は前記事「VLC 音声切り替わりパッチの適用」を参照
設定はVLC、「Remote for VLC」双方に必要であるが、まずPC側VLCについては起動してからメニューバー「ツール(T)」から「設定(P)」を選択し、設定ウィンドウを表示し
(1) 左最下行「設定の表示」で「すべて」をチェックここでVLCを一旦終了させ、自宅ネットワーク内からのアクセスを許可するためVLCのHTTPアクセスリストを変更する。
(2) メインインターフェース>拡張インターフェースモジュールの「Web」をチェック
(3) 制御インターフェース>制御インターフェースの「HTTPリモートコントロールインターフェース」をチェック
(4) 最下行「保存(S)」で終了
$ sudo vi /etc/vlc/lua/http/.hosts自身のネットワーク(192.168.1.0/24)の例なので実環境に合わせて変更が必要である。
・・・・・・・・・・・・・・・・・・・
#192.168.0.0/16
192.168.1.0/16 #コメントを外す
#169.254.0.0/16
・・・・・・・・・・・・・・・・・・・
「Remote for VLC」の方はGooglePlayから導入することができる。設定は起動した後メニューから「Setting」を選択すると自動的にWifi越しにスキャンを始めるので、PC側のVLCを予め起動しておけば自動検出される。手動で設定するには同様に「Setting」から「Add VLC server」で、ホスト名(又はIPアドレス)及びポート番号(デフォルト8080)を入力すれば良い。
スクリーンショット(Remote for VLC)はPC側のVLCでリアル視聴している時のものですが、これを見てもチャンネル選択、ボリューム調整、フル画面切替などの操作が手元で可能になっていることがわかると思います。この他にも再生ファイルの選択等、色々操作が可能である。
VLCによるリアル視聴は前記事「VLC 音声切り替わりパッチの適用」を参照
前の10件 | -