Raspberry Pi: mmcblk

mmcblk

SD/MMC card 는 MMC 서브시스템을 /dev/mmcblk{id} 형식으로 블럭 장치로 사용한다.

dmesg 로 부트 메시지를 보면 SDHCI 인터페이스에 장착한 장치를 확인할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[    0.789621] sdhci: Secure Digital Host Controller Interface driver
[ 0.789628] sdhci: Copyright(c) Pierre Ossman
[ 0.789999] sdhost-bcm2835 3f202000.sdhost: could not get clk, deferring probe
[ 0.790252] sdhci-pltfm: SDHCI platform and OF driver helper
[ 0.791051] ledtrig-cpu: registered to indicate activity on CPUs
[ 0.791232] hidraw: raw HID events driver (C) Jiri Kosina
[ 0.791461] usbcore: registered new interface driver usbhid
[ 0.791467] usbhid: USB HID core driver
[ 0.792448] vchiq: vchiq_init_state: slot_zero = 0xb6980000, is_master = 0
[ 0.794533] Initializing XFRM netlink socket
[ 0.794566] NET: Registered protocol family 17
[ 0.794724] Key type dns_resolver registered
[ 0.795223] Registering SWP/SWPB emulation handler
[ 0.796192] registered taskstats version 1
[ 0.796681] vc-sm: Videocore shared memory driver
[ 0.796694] [vc_sm_connected_init]: start
[ 0.802967] [vc_sm_connected_init]: end - returning 0
[ 0.809343] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 87, base_baud = 0) is a PL011 rev2
[ 0.809410] console [ttyAMA0] enabled
[ 0.811406] sdhost: log_buf @ b6913000 (f6913000)
[ 0.889149] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
[ 0.889333] of_cfs_init
[ 0.889478] of_cfs_init: OK
[ 0.890211] Waiting for root device /dev/mmcblk0p2...
[ 0.956566] mmc0: host does not support reading read-only switch, assuming write-enable
[ 0.958563] mmc0: new high speed SDHC card at address 59b4
[ 0.959555] mmcblk0: mmc0:59b4 00000 14.9 GiB
[ 0.961428] mmcblk0: p1 p2

메시지에서 보듯 mmc0 장치에 카드가 삽입되기 전에 인터럽트가 없다.

1
2
$ cat /proc/interrupts |grep mmc
86: 393 0 0 0 ARMCTRL-level 88 Edge mmc0

https://developer.toradex.com/knowledge-base/sd-mmc-card-(linux)

Raspberry Pi : Digital Signage

Digital Signage

라즈베리파이에서 슬라이드쇼 구현해 보자.

py-slideshow

https://github.com/cgoldberg/py-slideshow/

pyglet 으로 이미지를 패닝, 확대 효과를 가진 슬라이드 쇼.

Screenly OSE

Screenly Open Source Edition은 디지털 시그네이지 소프트웨어 이다.

Disk images

The recommended installation method is to grab the latest disk image from here

라즈비안에서 설치

Raspbian Lite 에서 설치를 할 수 있다.

먼저

sudo apt install -y network-manager

1
2
3
4
5
6
7
8
9
10
11
$ bash <(curl -sL https://www.screenly.io/install-ose.sh)
_____ __ ____ _____ ______
/ ___/_____________ ___ ____ / /_ __ / __ \/ ___// ____/
\__ \/ ___/ ___/ _ \/ _ \/ __ \/ / / / / / / / /\__ \/ __/
___/ / /__/ / / __/ __/ / / / / /_/ / / /_/ /___/ / /___
/____/\___/_/ \___/\___/_/ /_/_/\__, / \____//____/_____/
/____/
Screenly OSE requires a dedicated Raspberry Pi / SD card.
You will not be able to use the regular desktop environment once installed.

Do you still want to continue? (y/N)
1
Would you like to use the experimental branch? It contains the last major changes, such as the new browser and migrating to Docker (y/N)

It looks like NetworkManager is not installed. Please install it by running ‘sudo apt install -y network-manager’ and then re-run the installation.

1
Would you like to perform a full system upgrade as well? (y/N)

설치를 시작하면 15분 이상이 소요된다.
This installation will take 15 minutes to several hours, depending on variables such as:

1
2
Installation completed.
You need to reboot the system for the installation to complete. Would you like to reboot now? (y/N)

pipresent

python2 기반이고, 실행이 안됐다.

https://pipresents.wordpress.com

https://github.com/KenT2/pipresents-beep

Requirements
  • must use the latest version of Raspbian Stretch with Desktop (not the Lite version)
  • must be run from the PIXEL desktop.
  • must be installed and run from user Pi

install

required packages

1
2
sudo apt install python-imaging python-pil.imagetk python-pexpect
sudo apt install unclutter mplayer uzbl

optional packages

sudo pip install evdev (if you are using the input device I/O plugin)
sudo apt-get install mpg123 (for .mp3 beeps)

1
wget https://github.com/KenT2/pipresents-beep/tarball/master -O - | tar xz

Dead-simple Digital menu

https://github.com/angryrancor/ezdmb

Raspberry Pi 3 64bit OS openSUSE: Service 관리

Upgrade OpenSUSE LEAP 42.2 to LEAP 15

https://en.opensuse.org/SDB:System_upgrade

OpenSUSE LEAP 42.2를 LEAP 15.0으로 업그레이드 하려고 한다.

[그림. 지원 중단 배포본 (OpenSUSE)]

Upgrade

Update repository

다음 명령으로 현재 배포본의 Repository Url이 활성화 되어 있는지 확인한다.

1
2
3
4
5
6
7
8
# zypper repos --uri

Repository priorities are without effect. All enabled repositories share the same priority.

# | Alias | Name | Enabled | GPG Check | Refresh | URI
--+-----------------------------------+-----------------------------------+---------+-----------+---------+----------------------------------------------------------------------------
1 | openSUSE-Ports-Leap-42.2-Update | openSUSE-Ports-Leap-42.2-Update | Yes | (r ) Yes | Yes | http://download.opensuse.org/ports/update/42.2/
2 | openSUSE-Ports-Leap-42.2-repo-oss | openSUSE-Ports-Leap-42.2-repo-oss | Yes | (r ) Yes | Yes | http://download.opensuse.org/ports/aarch64/distribution/leap/42.2/repo/oss/

42.2 저장소 백업하고,

1
# cp -Rv /etc/zypp/repos.d /etc/zypp/repos.d.Old

42.2 를 15.0 으로 변경하자,

1
# sed -i 's/42.2/15.0/g' /etc/zypp/repos.d/*

업데이트 저장소 위치가 다르기 때문에 zypper repos --uri 에서 openSUSE-Ports-Leap-15.2-Update 를 삭제한다.

1
zypper rr 1

그리고 openSUSE-Ports-Leap-15.0-Update 를 추가한다.

1
zypper addrepo --check --refresh --name 'openSUSE-Leap-15.0-Update' http://download.opensuse.org/update/leap/15.0/oss/ repo-update

15.2 저장소가 제대로 들어갔는지 확인한다.

1
2
3
4
5
6
7
# zypper repos --uri
Repository priorities are without effect. All enabled repositories share the same priority.

# | Alias | Name | Enabled | GPG Check | Refresh | URI
--+-----------------------------------+-----------------------------------+---------+-----------+---------+----------------------------------------------------------------------------
1 | openSUSE-Ports-Leap-15.0-repo-oss | openSUSE-Ports-Leap-15.0-repo-oss | Yes | (r ) Yes | Yes | http://download.opensuse.org/ports/aarch64/distribution/leap/15.0/repo/oss/
2 | repo-update | openSUSE-Leap-15.0-Update | Yes | ( p) Yes | Yes | http://download.opensuse.org/update/leap/15.0/oss/

결과에서 repo-update 가 Enabled 컴럼이 Yes 인지 확인한다. 만약 No 라면 다음 명령으로 활성화 한다.

1
zypper modifyrepo --enable repo-update

Update repository

zypper ref

Distribution Upgrade

1
2
3
4
5
6
7
8
# zypper dup
...

613 packages to upgrade, 170 to downgrade, 340 new, 103 to remove, 6 to change
arch.
Overall download size: 658.0 MiB. Already cached: 0 B. After the operation,
additional 774.1 MiB will be used.
Continue? [y/n/...? shows all options] (y): y

homepi64:~ # reboot
[11840.081284] reboot: Restarting system
MMC: mmc@7e202000: 0, mmc@7e300000: 1
Loading Environment from FAT… *** Warning - bad CRC, using default environment

진행중 42.2와 충돌하는 패키지가 표시되는데 모둔 1로 설치했다.

1
2
3
4
5
6
7
8
9
10
11
12
4 Problems:
Problem: nothing provides tar = 1.30 needed by tar-lang-1.30-lp150.2.3.2.noarch
Problem: nothing provides python3-dbus-python needed by snapper-zypp-plugin-0.5.4-lp150.3.3.1.noarch
Problem: nothing provides libgphoto2-6 = 2.5.18 needed by libgphoto2-6-lang-2.5.18-lp150.2.3.1.noarch
Problem: nothing provides gpg2 = 2.2.5 needed by gpg2-lang-2.2.5-lp150.3.3.1.noarch

Problem: nothing provides tar = 1.30 needed by tar-lang-1.30-lp150.2.3.2.noarch
Solution 1: deinstallation of tar-lang-1.27.1-11.1.noarch
Solution 2: keep obsolete tar-lang-1.27.1-11.1.noarch
Solution 3: break tar-lang-1.30-lp150.2.3.2.noarch by ignoring some of its dependencies

Choose from above solutions by number or skip, retry or cancel [1/2/3/s/r/c] (c):1

재시동

업그레이드를 설치한 후에 재시동 하면 약 5분 정도 펌웨어 등을 설치하는 과정을 거친다. 로그인해서 버전을 확인해 보자

qkboo@homepi64:~> uname -a
Linux homepi64 4.4.104-18.44-default #1 SMP Thu Jan 4 08:07:55 UTC 2018 (05a9de6) aarch64 aarch64 aarch64 GNU/Linux

~> uname -a
Linux homepi64 4.4.104-18.44-default #1 SMP Thu Jan 4 08:07:55 UTC 2018 (05a9de6) aarch64 aarch64 aarch64 GNU/Linux

https://en.opensuse.org/SDB:Find_openSUSE_version

Getting Started `firewalld`

RedHat, CentOS, Fedora 배포본 등에서 표준 방화벽 인터페이스로 제공되는 최신 FirewallD 사용을 시작해 보자. firewalld 패키지 설치는 각 배포본의 방법으로 설치하면 된다.

여기서는 OpenSUSE, Armbian 배포본을 설치한 시스템에서 firewalld 방화벽을 구성하고 설정하는 과정을 요약 정리했다.

자세히 보기

Raspberry Pi : Upgrade OpenSUSE LEAP 42.2 to 42.3

Raspberry Pi 3 에 설치해 사용중이던 openSUSE LEAP 42.2의 지원이 종료되어, 2019년가지 지원하는 LEAP 42.3으로 업그레이드하는 과정을 정리했다.

openSUSE는 LEAP 15.0으로 최신 버전으로 배포하고 있다. 42.2에서 15.0으로 바로 업그레이드시 내가 해결 못하는 문제가 생겨서 42.3으로 업그레이드 했다.

자세히 보기

Raspberry Pi : Raspbian 설치준비

이 글은 Raspberry Pi Programming 과정을 진행하며 강의한 자료를 바탕으로 공개강의를 위한 텍스트로 슬라이드쉐어, blog.thinkbee.kr 그리고 실제 과정을 영상 youtube 채널에 공개할 목적으로 작성한다.

Install Rasbperry Pi 글타래는 아래 같이 구성되며 간단한 소개, Serial console, OS 설치, Service 구성 및 사용에 대해 작성했다.

  1. Raspberry Pi 설치준비
  2. Install Raspbian OS
  3. Managing Service daemon
  4. Basic OS Security for Server
  5. Install & Configuration - Nginx, Node JS, Jupyter
자세히 보기

openSUSE: Network 관리

Network

yast 명령으로 네트워크 구성을 수정할 수 있다. 실제 네트워크 관련 프레임워크는 wicked 를 사용한다.

https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_yast_ncurses_commands.html

net-tools

기존 ifconfig 가 deprecate 되서 ip 명령을 사용한다. [^2]

그리고 ip 명령 예제를 참고해

1
2
3
ip a
ip address
ip link

IP

GUI에서 YaSt 도구를 사용하면 쉽게 설정할 수 있다. 터미널에서는 wicked 시스템에 따라서 네트워크를 구성한다.

https://doc.opensuse.org/documentation/leap/reference/html/book.opensuse.reference/cha.basicnet.html#sec.basicnet.manconf

타 리눅스 배포본에서 사용하는 방법의 구성 설정 파일은 /etc/sysconfig/network/ifcfg-[DEVICE] 이다. *[DEVICE]*는 사용할 인터페이스 이름이다.

1
2
3
4
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.10
LABEL="System eth0"

Gateway는 /etc/sysconfig/network/routes 파일에 다음 같이 구성해 준다.[^4]

1
default gatewayaddr 192.168.1.1

DNS는 /etc/resolv.conf 를 참조하는데 yast 로 변경할 수 있다.

1
yast dns edit nameserver1=192.168.1.1

https://doc.opensuse.org

1
sudo ip link set eth0 up

Raspberry Pi 3에서 Opensuse LEAP 설치후 10가지 작업

Raspberry Pi 3에서 Opensuse LEAP 설치후 10가지 작업

jeos가 아닌 E20, LXQT 같은 데스크탑을 설치후 할 일을 정리했다.

Install Gnome Tweak Tool & dconf editor

By default GNOME 3 settings and options are looking good but if you want make your desktop more beautiful. Better you can install Gnome Tweak Tool & dconf editor which will give lots of cool options to make your desktop more beautiful which was not there in GNOME Application.

Install Icon theme

packman repository

라이센스와 특허 문제로 몇몇 중요한 저장소가 빠져서 배포되고 있다. opensuse 커뮤니티에서 이런 패키지를 제공하는 packman 저장소를 운영하고 있다. packman은 4가지 저장소 이루어저 있다.

  • Essensials: 오디오/비디오 앱을 위한 코덱
  • Multimedia: 멀티미디어 관련 앱
  • Extra: 멀티미디어 이외의 앱과 네트워크 관련
  • Games: 게임 패키지

Packman repository 활성화

1
~> sudo zypper addrepo http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_42.3/ Packman-Repository

혹은

1
~> sudo zypper ar -f -n packman http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_42.3/ packman

Tumbleweed [^4]

1
~> sudo zypper ar -p 1 -f -n packman http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/ packman

그리고 저장소 정보를 갱신한다.

1
~> sudo zypper ref

이 저장소를 지우려면

1
sudo zypper lr -d

해당 저장소 번로를 zypper rr [no] 명령으로 삭제한다.

1
sudo zypper rr 3

Media applications [^5]

vlc 설치

1
~> sudo zypper install vlc vlc-codecs

Transcode 혹은 비디오 변환작업을 하면 Hanbrake 가 적절한다.

1
~>sudo zypper install handbrake-cli handbrake-gtk

Install Media Codecs

H264/AVC streams support on your PC: [^4]

1
~> sudo zypper install x264 libx265-130 libx264-148

k3b-codecs [^5]

ffmpeg 와 lame 설치

1
~> sudo zypper install ffmpeg  lame

GStreamer 플러그인 설치

1
~> sudo zypper install gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer-plugins-ugly-orig-addon gstreamer-plugins-libav

Chrome

Install Chrome [^5]

sudo zypper in chromium

OpenSUSE comes with Firefox as the default browser. But since Firefox isn’t capable of playing restricted media such as Netflix, I recommend installing Chrome. This takes some extra work. First you need to import the trusted key from Google. Open the terminal app and run the ‘wget’ command to download the key:

wget https://dl.google.com/linux/linux_signing_key.pub

Then import the key:

sudo rpm –import linux_signing_key.pub

Now head over to the Google Chrome website and download the 64 bit .rpm file. Once downloaded run the following command to install the browser:

sudo zypper install /PATH_OF_GOOGLE_CHROME.rpm

yast2 모듈

Leap 42.3 에는 yast -l 로 모듈을 확인해 bootloader, checkmedia
disk
firewall
host
inst_release_notes
keyboard
lan
language
proxy
remote
repositories
security
services-manager
sw_single, timezone, users, view_anymsg

추가적인 yast2 모듈을 설치하기 위해 아래 같이 검색할 수 있다.

1
sudo zypper search yast2-

VLC is one of the best multimedia players out there. It’s free and open source. You can install it via:

sudo zypper in vlc
you are a gamer, then you may probably want to install Steam:

sudo zypper in steam

Dropbox is probably the most famous solution on Linux desktops. You can install it using:

sudo zypper in dropbox

참고

[^1]: System Upgrade
[^2]: net-tools deprecated
[^4]: Things to do after installing opensuse
[^5]: 8 things to do after Opensue

Rasberry Pi EEG

Raspberry Pi로 구현하는 EEG

Electroencepharogram, EEG는 머리에 부착한 적극등에 의해 뇌의 활동 상태를 측정하는 기술이다.

머리의 대뇌피질에 전극을 연결해 뇌파를 측정하면 델타 -δ파(0.2 ~ 3.99 Hz), 쎄타 -θ파(4 ~ 7.99 Hz), 알파 -α파(8 ~ 12.99 Hz), 베타 -β파(13 ~ 29.99 Hz), 감마- g파(30~50 Hz) 파동으로 구분할 수 있다.

Raspberry Pi에서 EEG를 시현한 사례도 많이 제공되고 있다.

Neosky Mindwave

100€ 선에서 Neurosky Mindwave 제품같은 저렴한 EEG 헤드셋을 이용할 수 있다.

그림. Nerosky Mindwave EEG

다음은 유튜브에 공개된 Neurosky Mindwave를 사용한 시연 동영상이다:

Mind control with Raspberry Pi: Neurosky Mindwave

Mindwave

헤드셋과 Bluetooth dongle로 구성되어 있어서, 라즈베리파이에서 USB 장치 연결을 하고 dmesg로 장치 인식을 확인할 수 있다.
그리고 Mindwave용 Python라이브러리를 사용해 EEG 신호를 측정할 수 있다.

mindwave-python 라이브러리

파이썬 Mindwave 라이브러리를 사용할 수 있다.

DiY EEG circuit

EEG 세트를 자작으로 구현해 볼 수 있다.

참고

  1. Raspberry Pi mindcontrol! Neurosky mindwave as simple EEG interface
  2. 뇌파의 개요