====== BPi-R1 で Raspbian に swconfig をインストール ======
BPi-R1 向けの Raspbian には,BPI-R1 に入っている イーサネット・スイッチ(BCM53125) を制御するための swconfig コマンドが入っていません.
調べると,下記の URL のシェルスクリプトがそのまま使えました.
https://raw.githubusercontent.com/Bananian/bananian/master/scripts/build-swconfig.sh
このスクリプトに沿ってビルドすると,openwrt/package/network/config/swconfig/src の中に,ビルドされた swconfig が出来ます.
この swconfig を /usr/local/bin にコピーすれば,OpenWrt の swconfig と同様に,Raspbian でも BPi-R1 のイーサネット・スイッチを制御できるようになります.
===== 簡単な使い方 =====
==== 普通のイーサネットスイッチと同じにする ====
以下のスクリプトは,vlan を使って,普通のイーサネットスイッチと同じ状態にします.
#!/bin/sh
# The swconfig port number are:
# |2|1|0|4| |3|
# (looking at front of ports)
swconfig dev switch0 set reset
swconfig dev switch0 set enable_vlan 1
swconfig dev switch0 vlan 102 set ports '0 1 2 3 4 8'
swconfig dev switch0 port 0 set pvid 102
swconfig dev switch0 port 1 set pvid 102
swconfig dev switch0 port 2 set pvid 102
swconfig dev switch0 port 3 set pvid 102
swconfig dev switch0 port 4 set pvid 102
swconfig dev switch0 set apply
vlan を有効にして,全てのポートを vlan ID 102 に結びつけています.'set ports' の後に続くのは,その vlan ID に参加するポート番号です.
例えば '0 1 2 3 4 8' を '0 2 3 4 8' とすると,1番ポートはどこにも結びつかず,切り離しと同じになります.
==== 各ポートのイーサネット接続状態 ====
現在のイーサネットスイッチの接続状況を確認するには,以下の様にすると分かります.
pi@raspberrypi ~ $ for i in 0 1 2 3 4 5 6 7 8 ; do swconfig dev switch0 port $i get link ; done ;
port:0 link:down
port:1 link:up speed:1000baseT full-duplex auto
port:2 link:down
port:3 link:up speed:1000baseT full-duplex auto
port:4 link:up speed:100baseT full-duplex auto
port:5 link:down
port:6 link:down
port:7 link:down
port:8 link:up speed:1000baseT full-duplex
pi@raspberrypi ~ $
==== イーサネット各ポートの通信状態 ====
各ポートの通信状態を取得します.割と細かく出力していると思います.
pi@raspberrypi ~ $ swconfig dev switch0 show
Global attributes:
enable_vlan: 1
ports: 0x011f
reset_mib: ???
enable_jumbo: 0
allow_vid_4095: 0
Port 0:
mib: TxOctets : 0
TxDropPkts : 0
TxBroadcastPkts : 0
TxMulticastPkts : 0
TxUnicastPkts : 0
TxCollisions : 0
TxSingleCollision : 0
TxMultipleCollision : 0
TxDeferredTransmit : 0
TxLateCollision : 0
TxExcessiveCollision: 0
TxPausePkts : 0
RxOctets : 0
RxUndersizePkts : 0
RxPausePkts : 0
Pkts64Octets : 0
Pkts65to127Octets : 0
Pkts128to255Octets : 0
Pkts256to511Octets : 0
Pkts512to1023Octets : 0
Pkts1024to1522Octets: 0
RxOversizePkts : 0
RxJabbers : 0
RxAlignmentErrors : 0
RxFCSErrors : 0
RxGoodOctets : 0
RxDropPkts : 0
RxUnicastPkts : 0
RxMulticastPkts : 0
RxBroadcastPkts : 0
RxSAChanges : 0
RxFragments : 0
RxJumboPkts : 0
RxSymbolErrors : 0
RxDiscarded : 0
pvid: 102
link: port:0 link:down
Port 1:
mib: TxOctets : 793722
TxDropPkts : 0
TxBroadcastPkts : 2024
TxMulticastPkts : 2036
TxUnicastPkts : 335
TxCollisions : 0
TxSingleCollision : 0
TxMultipleCollision : 0
TxDeferredTransmit : 0
TxLateCollision : 0
TxExcessiveCollision: 0
TxPausePkts : 0
RxOctets : 42356
RxUndersizePkts : 0
RxPausePkts : 0
Pkts64Octets : 80
Pkts65to127Octets : 274
Pkts128to255Octets : 29
Pkts256to511Octets : 7
Pkts512to1023Octets : 0
Pkts1024to1522Octets: 0
RxOversizePkts : 0
RxJabbers : 0
RxAlignmentErrors : 0
RxFCSErrors : 0
RxGoodOctets : 42356
RxDropPkts : 0
RxUnicastPkts : 323
RxMulticastPkts : 57
RxBroadcastPkts : 10
RxSAChanges : 1
RxFragments : 0
RxJumboPkts : 0
RxSymbolErrors : 0
RxDiscarded : 21
pvid: 102
link: port:1 link:up speed:1000baseT full-duplex auto
Port 2:
mib: TxOctets : 0
TxDropPkts : 0
TxBroadcastPkts : 0
TxMulticastPkts : 0
TxUnicastPkts : 0
TxCollisions : 0
TxSingleCollision : 0
TxMultipleCollision : 0
TxDeferredTransmit : 0
TxLateCollision : 0
TxExcessiveCollision: 0
TxPausePkts : 0
RxOctets : 0
RxUndersizePkts : 0
RxPausePkts : 0
Pkts64Octets : 0
Pkts65to127Octets : 0
Pkts128to255Octets : 0
Pkts256to511Octets : 0
Pkts512to1023Octets : 0
Pkts1024to1522Octets: 0
RxOversizePkts : 0
RxJabbers : 0
RxAlignmentErrors : 0
RxFCSErrors : 0
RxGoodOctets : 0
RxDropPkts : 0
RxUnicastPkts : 0
RxMulticastPkts : 0
RxBroadcastPkts : 0
RxSAChanges : 0
RxFragments : 0
RxJumboPkts : 0
RxSymbolErrors : 0
RxDiscarded : 0
pvid: 102
link: port:2 link:down
Port 3:
mib: TxOctets : 9410908
TxDropPkts : 0
TxBroadcastPkts : 280
TxMulticastPkts : 226
TxUnicastPkts : 98275
TxCollisions : 0
TxSingleCollision : 0
TxMultipleCollision : 0
TxDeferredTransmit : 0
TxLateCollision : 0
TxExcessiveCollision: 0
TxPausePkts : 0
RxOctets : 264257974
RxUndersizePkts : 0
RxPausePkts : 0
Pkts64Octets : 3602
Pkts65to127Octets : 17025
Pkts128to255Octets : 1420
Pkts256to511Octets : 1330
Pkts512to1023Octets : 450
Pkts1024to1522Octets: 172673
RxOversizePkts : 0
RxJabbers : 0
RxAlignmentErrors : 0
RxFCSErrors : 0
RxGoodOctets : 264257974
RxDropPkts : 0
RxUnicastPkts : 189162
RxMulticastPkts : 3470
RxBroadcastPkts : 3868
RxSAChanges : 7284
RxFragments : 0
RxJumboPkts : 0
RxSymbolErrors : 0
RxDiscarded : 0
pvid: 102
link: port:3 link:up speed:1000baseT full-duplex auto
Port 4:
mib: TxOctets : 643280
TxDropPkts : 0
TxBroadcastPkts : 1624
TxMulticastPkts : 1882
TxUnicastPkts : 69
TxCollisions : 0
TxSingleCollision : 0
TxMultipleCollision : 0
TxDeferredTransmit : 0
TxLateCollision : 0
TxExcessiveCollision: 0
TxPausePkts : 0
RxOctets : 144674
RxUndersizePkts : 0
RxPausePkts : 0
Pkts64Octets : 139
Pkts65to127Octets : 13
Pkts128to255Octets : 42
Pkts256to511Octets : 341
Pkts512to1023Octets : 0
Pkts1024to1522Octets: 6
RxOversizePkts : 0
RxJabbers : 0
RxAlignmentErrors : 0
RxFCSErrors : 0
RxGoodOctets : 144674
RxDropPkts : 0
RxUnicastPkts : 0
RxMulticastPkts : 81
RxBroadcastPkts : 460
RxSAChanges : 1
RxFragments : 0
RxJumboPkts : 0
RxSymbolErrors : 0
RxDiscarded : 4
pvid: 102
link: port:4 link:down
Port 5:
mib: ???
pvid: 0
link: port:5 link:down
Port 6:
mib: ???
pvid: 0
link: port:6 link:down
Port 7:
mib: ???
pvid: 0
link: port:7 link:down
Port 8:
mib: TxOctets : 264353136
TxDropPkts : 0
TxBroadcastPkts : 4300
TxMulticastPkts : 3504
TxUnicastPkts : 188954
TxCollisions : 0
TxSingleCollision : 0
TxMultipleCollision : 0
TxDeferredTransmit : 0
TxLateCollision : 0
TxExcessiveCollision: 0
TxPausePkts : 0
RxOctets : 9302499
RxUndersizePkts : 0
RxPausePkts : 0
Pkts64Octets : 195
Pkts65to127Octets : 85788
Pkts128to255Octets : 10869
Pkts256to511Octets : 587
Pkts512to1023Octets : 411
Pkts1024to1522Octets: 363
RxOversizePkts : 0
RxJabbers : 0
RxAlignmentErrors : 0
RxFCSErrors : 6
RxGoodOctets : 9300925
RxDropPkts : 0
RxUnicastPkts : 98088
RxMulticastPkts : 107
RxBroadcastPkts : 12
RxSAChanges : 1
RxFragments : 0
RxJumboPkts : 0
RxSymbolErrors : 0
RxDiscarded : 0
pvid: 102
link: port:8 link:up speed:1000baseT full-duplex
VLAN 102:
ports: 0 1 2 3 4 8
pi@raspberrypi ~ $