반응형

2020/08/14 - [Raspberry Pi & Arduino] - How to play old DOS games on KODI(LibreELEC) with Raspberry Pi - 코디(라즈베리 파이)에서 도스 게임 플레이 하기


LibreELEC은 미디어 센터 프로그램인 KODI를 위한 리눅스 운영체제이다. KODI는 윈도우즈, 안드로이드등 여러가지 운영체제를 지원 하지만 라즈베리 파이를 이용한 홈 미디어 센터를 구성할때 KODI가 구동 될 수 있는 최소한의 환경을 갖춘 LibreELEC으로 진행 하면 다른 운영체제로 진행 하는 것보다 원활한 동작이 가능 하다.


LibreELEC - https://libreelec.tv/


KODI - https://kodi.tv/



Raspberry Pi - https://www.raspberrypi.org/


설치 및 활용은 영상으로 확인 하자.


Rufus is a utility that helps format and create bootable USB flash drives, such as USB keys/pendrives, memory sticks, etc.

Rufus - https://rufus.ie/


반응형
Posted by J-sean
:
반응형

가끔 조카들이 놀러 오면 같이 놀기 위해 오래된 컴퓨터에 레트로파이를 설치하고 예전 오락실 게임이나 콘솔 게임을 플레이 할 수 있도록 만들었다. 


2020/02/13 - [Raspberry Pi] - Raspberry Pi Desktop(Debian), Ubuntu에서 RetroPie 설치하기


이 컴퓨터는 거실에 두고 모니터보다 훨씬 큰 TV에 연결 했으니 이렇게만 만들어도 충분히 게임을 즐길 수 있지만 왠지 예전 게임기 느낌이 살지는 않는거 같아 살짝 아쉬운 마음이 들었다. 그래서 구입한 RETROFLAG의 SUPERPi Case-J.


제조: RETROFLAG

판매: Amazon


공식 판매처인 미국 아마존에서 구입이 가능하지만 게임패드가 포함되지 않은 모델의 경우에도 제품과 배송비를 합쳐 약 $26의 비용이 든다. 국내에서 사는게 더 비싸다면 배송 기간도 고려해서 아마존 구매를 생각해 보겠지만 디바이스마트에서 \16,500에 파는걸 보고 바로 주문했다.


그리고 이틀 후 도착한 내 소중한 케이스...


상자 앞 면


상자 뒷 면


상자 옆 면


겉 상자를 열면 안에 다시 속 상자가 들어 있다.



속 상자에 들어 있는 케이스. 모든 부품이 케이스 안에 다 들어 있다.


케이스 뒷 면


조립 메뉴얼


조립 메뉴얼



상자 안에 들어 있는 부품들


라즈베리 파이를 조립하기 전에 SD 카드를 분리해야 한다. 굳이 분리할 필요가 있을까 생각 했지만 분리하지 않으면 라즈베리 파이가 케이스에 제대로 들어가지 않는다.


조립에 필요한 부품들


케이스 위에 설치 할 롬 카트리지. 진짜 롬 카트리지는 아니고 SD 카드를 보관 할 수 있는 케이스다.



드라이버가 포함되어 있다.


Power/Reset/SAFE SHUTDOWN 스위치, 전면 USB포트 연결 케이블, GPIO연결 커넥터등이 보인다.





설치 과정 영상 추가 예정..................

SAFE SHUTDOWN 설치 영상 추가 예정............






영상에서 볼 수 있듯이 SAFE SHUTDOWN기능은 터미널에서 아래 명령어만 입력해 주면 간단히 설치 가능 하다.


wget -O - "https://raw.githubusercontent.com/RetroFlag/retroflag-picase/master/install.sh" | sudo bash


참고로 레트로파이에서 키보드 설정을 바꾸지 않았다면 영국 키보드로 지정되어 있다. 우리가 일반적으로 사용하는 키보드와는 키배열이 약간 다르므로 아래 그림을 참고 하자.


영국 키보드


그럼 install.sh에는 어떤 내용이 있어 SAFE SHUTOWN 기능이 설치 되는지 살펴 보자.


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/bash
 
 
#Step 1) Check if root--------------------------------------
if [[ $EUID -ne 0 ]]; then
   echo "Please execute script as root." 
   exit 1
fi
#-----------------------------------------------------------
 
#Step 2) enable UART----------------------------------------
cd /boot/
File=config.txt
if grep -"enable_uart=1" "$File";
    then
        echo "UART already enabled. Doing nothing."
    else
        echo "enable_uart=1" >> $File
        echo "UART enabled."
fi
#-----------------------------------------------------------
 
#Step 3) Update repository----------------------------------
sudo apt-get update -y
#-----------------------------------------------------------
 
#Step 4) Install gpiozero module----------------------------
sudo apt-get install -y python3-gpiozero
#-----------------------------------------------------------
 
#Step 5) Download Python script-----------------------------
cd /opt/
sudo mkdir RetroFlag
cd /opt/RetroFlag
script=SafeShutdown.py
 
if [ -e $script ];
    then
        echo "Script SafeShutdown.py already exists. Doing nothing."
    else
        wget "https://raw.githubusercontent.com/RetroFlag/retroflag-picase/master/SafeShutdown.py"
fi
#-----------------------------------------------------------
 
#Step 6) Enable Python script to run on start up------------
cd /etc/
RC=rc.local
 
if grep -"sudo python3 \/opt\/RetroFlag\/SafeShutdown.py \&" "$RC";
    then
        echo "File /etc/rc.local already configured. Doing nothing."
    else
        sed --"s/^exit 0/sudo python3 \/opt\/RetroFlag\/SafeShutdown.py \&\n&/g" "$RC"
        echo "File /etc/rc.local configured."
fi
#-----------------------------------------------------------
 
#Step 7) Reboot to apply changes----------------------------
echo "RetroFlag Pi Case installation done. Will now reboot after 3 seconds."
sleep 3
sudo reboot
#-----------------------------------------------------------




스크립트 분석 추가 예정..................






그럼 Safeshutdown.py의 내용을 확인해 보자.


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
29
30
#!/usr/bin/env python3
from gpiozero import Button, LED
import os 
from signal import pause
 
powerPin = 3 
resetPin = 2 
ledPin = 14 
powerenPin = 4 
hold = 1
led = LED(ledPin)
led.on()
power = LED(powerenPin)
power.on()
 
#functions that handle button events
def when_pressed():
  led.blink(.2,.2)
  os.system("sudo killall emulationstation && sleep 5s && sudo shutdown -h now")
def when_released():
  led.on()
def reboot(): 
  os.system("sudo killall emulationstation && sleep 5s && sudo reboot")
  
btn = Button(powerPin, hold_time=hold)
rebootBtn = Button(resetPin)
rebootBtn.when_pressed = reboot 
btn.when_pressed = when_pressed
btn.when_released = when_released
pause()




스크립트 분석 추가 예정......







반응형
Posted by J-sean
:
반응형

RetroPie installed on a PC can be too fast to play retro games. You can adjust(slow down) its speed by changing video_frame_delay value.


라즈베리 파이가 아닌 PC에 레트로파이를 설치한 경우 성능 차이로 인해 레트로 게임들이 너무 빨라 진행 할 수 가 없다. video frame delay 설정을 변경해 속도를 조절해 보자.


RetroPie Configuration을 선택 한다.


Configuration Editor를 선택 한다.


Advanced Configuration을 선택 한다.


Configure Libretro options를 선택 한다.



all/retroarch.cfg를 선택 한다.


video_frame_delay를 선택 한다.


Edit를 선택 한다.


15 이하의 적당한 숫자를 입력 하고 OK를 선택 한다. 다시 게임을 진행해 보면 속도가 적당히 변경되어 있다.



Configure Libretro options가 아닌 Manually edit RetroArch configurations에서도 변경 가능 하다.


all/retroarch.cfg를 선택 한다.


원래는 video_frame_delay가 주석처리(#)되어 있는데 위와 같이 주석을 삭제하고 적당한 값으로 바꾸면 된다.


특정 게임에서 잠시 video frame delay 값을 변경하고 싶다면 Hotkey(Select) + X 를 누른다.



Quick Menu가 표시 된다. 라즈베리파이(라즈비안)가 한국어로 설정되어 있다면 Quick Menu의 글자가 제대로 표시되지 않는다. 언어 설정을 영어로 바꾸면 제대로 표시된다.


Latency를 선택 한다.


Frame Delay를 선택 한다.


원하는 값을 선택 하고 게임으로 돌아가면 변경된 값이 적용 된다. 이 방법은 일회성이며 게임을 다시 시작하면 원래 값으로 돌아 간다. 이 상태를 저장하고 싶다면 Quick Menu에서 Save State를 선택 한다.


반응형
Posted by J-sean
:
반응형

레트로파이는 보통 레트로파이 홈페이지에서 받은 이미지를 MicroSD 카드에 설치하고 라즈베리 파이에서 사용 한다.

하지만 라즈비안이 설치된 라즈베리 파이나 라즈베리파이 데스크탑(데비안)이나 우분투가 설치된 PC에서도 레트로파이를 설치하고 레트로 게임을 즐길 수 있다.


2020/01/16 - [Raspberry Pi & Arduino] - Raspberry Pi Raspbian 설치 후 업데이트, 한글, 고정 IP, VNC, Samba 설정

2020/02/14 - [Raspberry Pi & Arduino] - How to slow down RetroPie games - 레트로파이 게임 속도 조절 하기(video frame delay)

2021/01/24 - [Raspberry Pi & Arduino] - How to add Korean font, game marquees, images, videos, and descriptions to RetroPie - 레트로파이에 한글 폰트, 게임 마키, 이미지, 플레이 영상, 설명 넣기

2020/11/12 - [Vita] - 오래된 노트북을 오락실 게임기로 만들어 보자.


APT repository를 모두 업그레이드 하고 Git이 설치 되어 있지 않다면 설치 한다.


sudo apt-get update

sudo apt-get upgrade

sudo apt-get install git


RetroPie-Setup 스크립트를 다운로드 한다.


git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git


다운 받은 스크립트 디렉토리로 이동하고 retropie_setup.sh를 실행 한다.


sudo ./retropie_setup.sh


Basic install을 실행 한다.


Yes를 선택 하고 설치를 진행 한다.



꽤 오랫동안 설치가 진행 된다.


설치가 완료되면 빌드하지 못한 에뮬레이터에 대한 메세지가 몇 개 표시 된다. 모두 OK를 선택 한다.


Setup 화면으로 돌아 오면 Update를 진행 한다.


Yes를 선택 하고 설치된 패키지 업데이트를 진행 한다.


최신 버전의 RetroPie Setup Script를 가져 왔다. OK를 선택 한다.



업데이트를 계속 진행 한다.


RetroPie에 관한 간단한 메세지가 표시 된다. OK를 선택 한다.


Kernel등의 underlying OS package들을 업데이트하기 위해 Yes를 선택 한다.


다시 꽤 오랜 시간동안 설치가 진행 된다.


업데이트가 완료 되었다.



재부팅을 선택 한다.


Yes를 선택 한다.


재부팅이 완료되면 레트로파이를 실행 한다. 터미널에서 emulationstation 명령어를 실행 해도 된다.


아래 게임패드 다이어그램을 참고하여 컨트롤러 버튼 설정을 진행 한다. 게임패드가 없다면 위와 같은 화면이 나오지만 키보드로 진행할 수 도 있다.


SNES Controller


XBox 360 Controller


PS3 Controller



버튼 설정을 완료하면 레트로파이가 실행 된다. 아직은 아무 게임도 보이지 않는다. 이 상태에서 게임 롬을 설치해도 오디오 드라이버가 설정 되지 않아 아무 소리도 나지 않는다. 오디오 드라이버 설정을 위해 A 버튼을 눌러 RetroPie Configuration으로 들어 간다.


Configuration Editor를 선택 한다.


Advanced Configuration을 선택 한다.


Configure Libretro options를 선택 한다.


all/retroarch.cfg를 선택 한다.



audio_driver를 선택 한다.


alsa(Advanced Linux Sound Architecture)를 선택 하고 Configuration을 빠져나가 레트로파이를 종료 한다.

※ 아래 순서로 진행해도 된다.

RetroPie Configuration - Retroarch - Settings - Audio - Output - Audio - alsa

RetroPie Configuration - Retroarch - Settings - Drivers - Audio - alsa


/home/pi/RetroPie/roms/arcade 디렉토리에 게임 롬 파일을 복사 한다. Raspberry Pi 2/3에 추천하는 MAME emulator는 lr-mame2003이고 lr-mame2003 emulator에 사용 가능한 게임 롬 버전은 MAME 0.78이다. MAME 0.78용 스트리트 파이터 2 롬 파일을 복사 했다.


다시 레트로 파이를 실행하면 ARCADE가 활성화 되고 1개의 게임이 사용 가능하다는 메세지가 표시 된다. A 버튼을 눌러 선택 한다.


ARCADE를 선택 하면 위에서 복사한 스트리트 파이터 2가 표시 된다. A 버튼을 누르고 진행 한다.



기본 에뮬레이터를 선택 하는 화면이 표시 된다. lr-mame2003을 선택 한다.


스트리트 파이터 2가 launching 된다.



스트리트 파이터 2가 실행 된다.


기본적으로 Raspberry Pi Desktop은 Screen Saver 프로그램이 설치되어 있지 않다. 하지만 Screen Saver 기능은 활성화 되어 있기 때문에 사용자 입력이 없으면 10분 후 화면이 꺼진다. RetroPie를 사용하는 동안에도 키보드나 마우스가 아닌 게임패드를 사용한다면 사용자 입력이 없다고 판단해 Screen Saver가 작동하게 되고 화면이 꺼져버리게 된다.


Preferences - Add/Remove Software를 선택 한다.


xscreensaver를 검색하고 설치 한다.


다시 Preferences를 확인해 보면 Screensaver가 설치되어 있다.


Screen Saver를 실행 한다.



Mode 콤보 박스를 클릭 하고 Disable Screen Saver를 선택 한다.


Screen Saver 기능이 비활성화 된다.


컴퓨터를 켜거나 재부팅하면 항상 위와 같은 GRUB 화면이 나온다. 여기서 몇 초(5초) 기다리거나 엔터키를 한 번 눌러야 부팅이 시작된다. 바로 부팅 되도록 해보자.


/etc/default/grub 파일을 열자.



GRUB_TIMEOUT=5로 되어 있다. 그래서 5초를 기다려야 했던 것이다.


기다리지 않고 바로 부팅되도록 0으로 바꾸고 저장한다.


sudo update-grub 명령으로 업데이트 한다. 이제 기다릴 필요 없이 바로 부팅된다.


반응형
Posted by J-sean
:
반응형

사실 일반적인 용도로는 사용하기 어려울 정도의 낮은 성능을 예상하고 라즈베리 파이에 별 관심을 두지 않았었다. 오히려 아두이노의 활용도가 더 높지 않을까 생각했었고 여러가지 간단한 프로젝트를 연습해 보며 어디에 활용하면 좋을까 고민하곤 했다.


하지만 Raspberry Pi 4 Model B의 생각보다 괜찮은 성능과 함께 이전 모델인 Raspberry Pi 3 시리즈로도 레트로 게임 에뮬레이터는 충분히 구동 가능하다는 사실을 알고 부터는 점점 관심이 생기기 시작 했다. 게다가 기본 운영체제가 Ubuntu 기반의 리눅스이기에 C나 Python등의 언어를 사용한 프로그래밍도 가능하다는 것을 알게 되었을땐 더 이상 망설일 이유가 없었다.


처음 구매 했던 Raspberry Pi 4 Model B


그렇게 한 달쯤 전 라즈베리 파이 4를 구매해서 Raspbian을 설치하고 여러가지 간단한 테스트를 해 보았다. Raspbian이라는 운영 체제에 4GB의 램은 생각보다 쾌적한 사용 환경을 보장해 주었다. 하지만 이전 모델에 비해 비싼 가격은 약간의 부담이었고 대단한 성능이 필요하지 않은 작업은 $40 정도의 이전 모델로도 충분하지 않을까 하는 생각에 Raspberry Pi 3 Model B를 구매했다.


2020/01/16 - [Raspberry Pi] - Raspberry Pi Raspbian 설치 후 업데이트, 한글, 고정 IP, VNC, Samba 설정


라즈베리 파이 3 모델 B 상자


뒷면


상자를 열면 간단한 안전 정보와 정전기 방지 비닐안에 라즈베리 파이가 들어 있다.


누구도 읽지 않을 라즈베리 파이 안전 정보



라즈베리 파이 3 모델 B


같이 구매한 방열판


방열판 뒤에 붙어 있는 스티커를 떼고 붙여 준다.


같이 구매한 케이스


선명한 산딸기 마크



랜포트와 USB포트가 나오는 구멍이다.


전원, HDMI, 오디오 포트가 나오는 구멍


케이스 뒷면과 미끄럼 방지 패드


라즈베리 파이를 장착하기 위해 분해 한다.


라즈베리 파이 장착



케이스 조립 완료 후 랜포트와 USB포트 모습


전원, HDMI, 오디오 포트도 잘 확인 된다.


미끄럼 방지 패드를 붙여 준다.


우선은 조카들과 함께 게임을 하기 위해 레트로 파이를 설치하고 이것 저것 테스트해 볼 계획이라 알리익스프레스에서 게임패드를 주문 했다. 코로나 바이러스 때문에 대부분의 알리익스프레스 판매자들이 9일까지 쉬니 아직 한참 기다야 할거 같다.


반응형
Posted by J-sean
:
반응형

Raspbian을 설치하고 업데이트, 한글, 고정 IP, VNC, Samba 설정등을 진행 한다.

 

기본 사용자: pi

기본 암호: raspberry

 

sudo apt-get update

 

sudo apt-get upgrade

 

Preferences - Add/Remove Software 클릭

 

Nanum Korean fonts 설치

 

Nabi 설치

 

im-config 설치

 

 

 

Preferences - Input Method 클릭

 

OK 클릭

 

Yes 클릭

 

hangul 선택

 

OK를 클릭하고 재부팅 한다. 재부팅해도 한글 입력이 되지는 않는다.

 

Raspberry Pi Configuration - Localisation - Locale에서 언어를 한국어로 바꾸고 다시 재부팅 한다.

 

 

 

'한/영'키나 'Shift + Space'키를 누르면 한글이 입력 된다.

 

Timezone을 Asia-Seoul로 바꿔준다.

 

netstat -nr 명령어로 Gateway주소를 확인한다.

 

/etc/dhcpcd.conf 파일 아래에 고정할 ip주소를 지정한다.

 

interface eth0

static ip_address=고정할 ip주소/24

static routers=Gateway 주소

static domain_name_servers=Gateway 주소

 

(무선 랜카드를 사용 한다면 interface를 eth0이 아닌 wlan0로 바꿔 준다)

 

재부팅하고 확인해 보면 지정한 ip주소로 고정 된다.

 

Raspbian은 기본적으로 VNC Server가 설치 되어 있지만 Raspberry Pi Desktop은 VNC Server가 설치되어 있지 않다.

필요한 경우 X11VNC Server를 설치 한다.

 

 

 

X11VNC Server를 실행 한다.

 

기본 설정으로 두고 OK를 클릭 한다.

 

Accept Connections를 체크한다.

암호가 필요 없다면 그대로 두고 OK를 클릭 한다.

 

RealVNC Viewer등으로 원격 접속하여 사용 할 수 있다.

 

VNC Server를 가끔 쓴다면 위와 같이 매번 사용할 때만 실행하면 되지만 VNC Server가 항상 실행되어야 한다면 rc.local에 등록하여 부팅시 자동으로 실행 되도록 한다. /etc/rc.local 파일을 열어 준다.

 

exit 0 명령어 위에 X11VNC Server를 실행하는 명령어를 넣고 저장 한다.

 

su pi -c 'x11vnc -loop -forever'

 

아래 링크를 참고한다.

2022.05.29 - [Linux] - Linux(Ubuntu, Raspberry Pi OS) 자동실행(rc.local)

 

이제 부팅시 자동으로 X11VNC Server가 실행 된다.

 

 

 

Samba를 설치 한다.

 

/etc/samba/smb.conf 파일끝에 아래 내용을 추가 한다.

 

[share]

path = /share

public = yes

writable = yes

 

testparm 명령을 실행 해서 smb.conf 파일에 문제가 없는지 확인 한다.

 

path에 지정한 /share 디렉토리를 만들고 읽기, 쓰기, 실행이 가능하도록 rwx 권한을 준다.

 

smbd은 자동으로 실행 및 등록 된다.

 

이제 /share 디렉토리는 다른 컴퓨터에서 접근 가능 하다.

 

공유기에서 Port forwarding 설정이 필요 하다면 netstat 명령어로 필요한 port를 확인 한다.

 

컴퓨터를 켜거나 재부팅하면 항상 위와 같은 GRUB 화면이 나온다. 여기서 몇 초(5초) 기다리거나 엔터키를 한 번 눌러야 부팅이 시작된다. 바로 부팅 되도록 해보자.

 

/etc/default/grub 파일을 열자.

 

GRUB_TIMEOUT=5로 되어 있다. 그래서 5초를 기다려야 했던 것이다.

 

기다리지 않고 바로 부팅되도록 0으로 바꾸고 저장한다.

 

sudo update-grub 명령으로 업데이트 한다. 이제 기다릴 필요 없이 바로 부팅된다.

 

반응형
Posted by J-sean
: