DS1NMA Blog

집에 설치된 라즈베리파이 서버가 SD카드로 OS 파티션을 구성하니 시간이 지나면 갑자기 메모리가 손상되는 일이 자주 있다. 1년에 4~5번꼴로 삭제와 포맷, 재설치가 반복이 되기 때문에 현재 라즈베리파이 서버에 D-STAR Hotspot 기능과 IP-PBX, Web server, NAS Storage Server가 구동되고 있어 이런 많은 구성을 두는 나로선 상당히 피곤하다.

 

라즈베리파이4 에서는 bootloader 차원에서 USB부팅이 가능하여 앞으로는 OS를 SD카드를 사용하지 않고 USB로 연결된 안정적인 1TB HDD를 사용하기로 하여 새로 구성을 하면서 설치과정을 정리해 보았다.

Destinate : Raspberry Pi 4 4GB + DVMega Board , after installed complete Asterisk 16 and FreePBX 15

 

● Initialize

# systemctl stop serial-getty@ttyAMA0.service
# systemctl disable serial-getty@ttyAMA0.service 

# nano /boot/cmdline.txt

‘console=serial0,115200’  삭제

 

# nano /boot/config.txt

dtoverlay=disable-bt 추가

 

● Install MMDVMHost with compile

# apt-get install git screen

 

# cd /tmp                                                                                                                        → if you use HD44780

# w get https://project-downloads.drogon.net/wiringpi-latest.deb     → if you use HD44780

# sudo dpkg -i wiringpi-latest.deb                                                                     → if you use HD44780

(Raspberry Pi4 기종이 apt repository의 WiringPi에서는 지원하지 않아 최신버전 2.52 패키지로 설치해야 HD44780 출력이 동작함, http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/)

 

# cd /opt
# git clone https://github.com/g4klx/MMDVMHost.git

# git clone https://github.com/g4klx/MMDVMCal.git

# cd /opt/MMDVMHost

 

# make                                                     → if you use HD44780, don't use make

# make -f Makefile.Pi.HD44780      → if you use HD44780, execuate this command.

 

# nano MMDVM.ini

[General]

Callsign=DS1NMA

Id=450371

#Timeout=180

Duplex=1

# ModeHang=10

RFModeHang=10

NetModeHang=3

Display=HD44780

Daemon=0

 

[Info]

RXFrequency=432380000

TXFrequency=437380000

Power=1

Latitude=0.0

Longitude=0.0

Height=0

Location=Seoul, Korea

Description=DS1NMA Repeater

URL=rep.kkit.kr

 

[Log]

# Logging levels, 0=No logging

DisplayLevel=1

FileLevel=2

FilePath=/var/log/MMDVM

FileRoot=MMDVM

 

[CW Id]

Enable=1

Time=10

# Callsign=

 

[DMR Id Lookup]

File=/opt/MMDVMHost/DMRIds.dat

Time=24

 

[NXDN Id Lookup]

File=NXDN.csv

Time=24

 

[Modem]

# Port=/dev/ttyACM0

Port=/dev/ttyAMA0

#Port=\\.\COM3

# Protocol=uart

# Address=0x22

TXInvert=1

RXInvert=0

PTTInvert=0

TXDelay=100

RXOffset=0

TXOffset=0

DMRDelay=0

RXLevel=50

TXLevel=50

RXDCOffset=0

TXDCOffset=0

RFLevel=100

# CWIdTXLevel=50

# D-StarTXLevel=50

# DMRTXLevel=50

# YSFTXLevel=50

# P25TXLevel=50

# NXDNTXLevel=50

# POCSAGTXLevel=50

# RSSIMappingFile=RSSI.dat

Trace=0

Debug=0

 

[Transparent Data]

Enable=0

RemoteAddress=127.0.0.1

RemotePort=40094

LocalPort=40095

# SendFrameType=0

 

[UMP]

Enable=0

# Port=\\.\COM4

Port=/dev/ttyACM1

 

[D-Star]

Enable=1

Module=B

SelfOnly=0

AckReply=1

AckTime=750

AckMessage=0

ErrorReply=1

RemoteGateway=0

# ModeHang=10

 

[DMR]

Enable=0

Beacons=0

BeaconInterval=60

BeaconDuration=3

ColorCode=1

SelfOnly=0

EmbeddedLCOnly=0

DumpTAData=1

# Prefixes=234,235

# Slot1TGWhiteList=

# Slot2TGWhiteList=

CallHang=3

TXHang=4

# ModeHang=10

 

[System Fusion]

Enable=0

LowDeviation=0

SelfOnly=0

TXHang=4

#DGID=1

RemoteGateway=0

# ModeHang=10

 

[P25]

Enable=0

NAC=293

SelfOnly=0

OverrideUIDCheck=0

RemoteGateway=0

# ModeHang=10

 

[NXDN]

Enable=0

RAN=1

SelfOnly=0

RemoteGateway=0

# ModeHang=10

 

[POCSAG]

Enable=0

Frequency=439987500

 

[D-Star Network]

Enable=1

GatewayAddress=127.0.0.1

GatewayPort=20010

LocalPort=20011

# ModeHang=3

Debug=0

 

[DMR Network]

Enable=0

Address=44.131.4.1

Port=62031

Jitter=360

# Local=62032

Password=PASSWORD

# Options=

Slot1=1

Slot2=1

# ModeHang=3

Debug=0

 

[System Fusion Network]

Enable=0

LocalAddress=127.0.0.1

LocalPort=3200

GatewayAddress=127.0.0.1

GatewayPort=4200

# ModeHang=3

Debug=0

 

[P25 Network]

Enable=0

GatewayAddress=127.0.0.1

GatewayPort=42020

LocalPort=32010

# ModeHang=3

Debug=0

 

[NXDN Network]

Enable=0

LocalAddress=127.0.0.1

LocalPort=14021

GatewayAddress=127.0.0.1

GatewayPort=14020

# ModeHang=3

Debug=0

 

[POCSAG Network]

Enable=0

LocalAddress=127.0.0.1

LocalPort=3800

GatewayAddress=127.0.0.1

GatewayPort=4800

# ModeHang=3

Debug=0

 

[TFT Serial]

# Port=modem

Port=/dev/ttyAMA0

Brightness=50

 

[HD44780]

Rows=2

Columns=16

 

# For basic HD44780 displays (4-bit connection)

# rs, strb, d0, d1, d2, d3

Pins=11,10,0,1,2,3

 

# Device address for I2C

I2CAddress=0x20

 

# PWM backlight

PWM=0

PWMPin=21

PWMBright=100

PWMDim=16

 

DisplayClock=1

UTC=1

 

[Nextion]

# Port=modem

Port=/dev/ttyAMA0

Brightness=50

DisplayClock=1

UTC=0

#Screen Layout: 0=G4KLX 2=ON7LDS

ScreenLayout=2

IdleBrightness=20

 

[OLED]

Type=3

Brightness=0

Invert=0

Scroll=1

Rotate=0

Cast=0

 

[LCDproc]

Address=localhost

Port=13666

#LocalPort=13667

DimOnIdle=0

DisplayClock=1

UTC=0

 

[Lock File]

Enable=0

File=/tmp/MMDVM_Active.lck

 

[Mobile GPS]

Enable=0

Address=127.0.0.1

Port=7834

 

[Remote Control]

Enable=0

Port=7642

 

 

# cd /opt/MMDVMCal   

# make

 

# nano /lib/systemd/system/mmdvmhost.service

[Unit]

Description=MMDVM Host Service

After=syslog.target network.target

 

[Service]

User=root

WorkingDirectory=/opt/MMDVMHost

ExecStart=/usr/bin/screen -S MMDVMHost -D -m /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini

ExecStop=/usr/bin/screen -S MMDVMHost -X quit

 

[Install]

WantedBy=multi-user.target

 

# chmod 755 /lib/systemd/system/mmdvmhost.service
# ln -s /lib/systemd/system/mmdvmhost.service /etc/systemd/system/mmdvmhost.service

# nano /lib/systemd/system/mmdvmhost.timer

[Timer]
OnStartupSec=60

[Install]

WantedBy=multi-user.target

 

# chmod 755 /lib/systemd/system/mmdvmhost.timer

 

# ln -s /lib/systemd/system/mmdvmhost.timer /etc/systemd/system/mmdvmhost.timer

# systemctl daemon-reload

# systemctl enable mmdvmhost.timer

# reboot

 

● Install ircDDBGateway (get github repository and compile)

 

# apt-get install libwxgtk3.0-dev git build-essential

# cd ~

# git clone --depth 1 https://github.com/g4klx/ircDDBGateway.git

# cd ~/ircDDBGateway

# make

# make install

 

데몬은 /usr/bin/ircddbgatewayd

설정파일은 nano /etc/ircddbgateway

language=6
gatewayCallsign=DS1NMA
latitude=0.0
longitude=0.0
description1=Seoul

description2=Korea

url=http://rep.kkit.kr

ircddbEnabled=1

ircddbHostname=rr.openquad.net

ircddbUsername=ds1nma

ircddbPassword=

aprsEnabled=1

aprsHostname=rotate.aprs2.net

aprsPort=14580

ccsEnabled=1

ccsHost=CCS704

dextraEnabled=1

dextraMaxDongles=3

dplusEnabled=1

dplusMaxDongles=3

dplusLogin=DS1NMA

dcsEnabled=1

remoteEnabled=1

remotePassword=1

remotePort=10022

infoEnabled=1

echoEnabled=1

logEnabled=0

dratsEnabled=1

dtmfEnabled=1

repeaterBand1=B

repeaterType1=0

repeaterAddress1=127.0.0.1

repeaterPort1=20011

frequency1=437.38

offset1=0.0000

rangeKms1=0.0000

agl1=0.000

reflector1=XRF076 B

atStartup1=1

reconnect1=0

latitude1=0.000000

longitude1=0.000000

데이터폴더는 /usr/share/ircddbgateway

로그는 /var/log/ircddbgateway

 

# nano /lib/systemd/system/ircddbgatewayd.service

[Unit]

Description=D-STAR Gateway Daemon

After=network.target

 

[Service]

User=root

ExecStart=/usr/bin/ircddbgatewayd

Restart=on-abort

 

[Install]

WantedBy=multi-user.target

# systemctl daemon-reload

# systemctl start ircddbgatewayd

# systemctl status ircddbgatewayd

 

 

 

 

데비안 기준이라 수정할게 좀 있음. 확인하면서 적용하기 바람.

Step-by-step guide

All commands are to be run as the root user, either by directly logging in as root or by using sudo su - .

Start from a base Debian 10 installation. All necessary packages will be installed through the following commands.

Prerequisite recommended OS update

Add the backports repo specifically so that the odbc-mariadb package is available. Then update the OS to current.

       
      사전에 타이프 할것
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
      • echo deb http://ftp.us.debian.org/debian/ buster-backports main > /etc/apt/sources.list.d/backports.list
      • echo deb-src http://ftp.us.debian.org/debian/ buster-backports main >> /etc/apt/sources.list.d/backports.list
      • apt-get update
      • apt-get upgrade

Install all the necessary packages (취소선 그어진 것은 raspbian 10에서 설치 안됨. 삭제하고 실행

      • apt-get install -y build-essential linux-headers-* `uname -r` openssh-server apache2 mariadb-server mariadb-client bison flex php php-curl php-cli php-pdo php-mysql php-pear php-gd php-mbstring php-intl php-bcmath curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp2-dev libspandsp-dev sudo subversion libtool-bin python-dev unixodbc dirmngr sendmail-bin sendmail asterisk debhelper-compat cmake libmariadb-dev odbc-mariadb php-ldap

Install Node.js (setup_11.x --> setup_12.x 로 바꿀것)

      • curl -sL https://deb.nodesource.com/setup_11.xsetup_12.x | sudo -E bash -
      • apt-get install -y nodejs

Install this required Pear module

      • pear install Console_Getopt

Prepare Asterisk

      • systemctl stop asterisk
      • systemctl disable asterisk
      • cd /etc/asterisk
      • mkdir DIST
      • mv * DIST
      • cp DIST/asterisk.conf .
      • sed -i 's/(!)//' asterisk.conf
      • touch modules.conf
      • touch cdr.conf

Configure Apache web server

      • sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.3/apache2/php.ini
      • sed -i 's/\(^memory_limit = \).*/\1256M/' /etc/php/7.3/apache2/php.ini
      • sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
      • sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
      • a2enmod rewrite
      • service apache2 restart
      • rm /var/www/html/index.html

Configure ODBC

      • cat <<EOF > /etc/odbcinst.ini
        [MySQL]
        Description = ODBC for MySQL (MariaDB)
        Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
        FileUsage = 1
        EOF
      • cat <<EOF > /etc/odbc.ini
        [MySQL-asteriskcdrdb]
        Description = MySQL connection to ‘asteriskcdrdb’ database
        Driver = MySQL
        Server = localhost
        Database = asteriskcdrdb
        Port = 3306
        Socket = /var/run/mysqld/mysqld.sock
        Option = 3
        EOF

Download FFMPEG static build for sound file manipulation

      • cd /usr/local/src
      • wget "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz"
      • tar xf ffmpeg-release-amd64-static.tar.xz
      • cd ffmpeg-4*
      • mv ffmpeg /usr/local/bin

Install FreePBX

      • cd /usr/local/src
      • wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz
      • tar zxvf freepbx-15.0-latest.tgz
      • cd /usr/local/src/freepbx/
      • ./start_asterisk start
      • ./install -n

Get the rest of the modules

Only a very basic system is installed at this point. You will probably want to install all the modules on Debian 10 . Alternatively, you can skip this and pick-and-choose the individual modules you want later.

      • fwconsole ma installall

Uninstall digium_phones

Broken with PHP 7.3 (April 2020).

      • fwconsole ma uninstall digium_phones

Apply the current configuration

      • fwconsole reload

Set symlinks to the correct sound files

      • cd /usr/share/asterisk
      • mv sounds sounds-DIST
      • ln -s /var/lib/asterisk/sounds sounds

Perform a restart to load all Asterisk modules that had not yet been configured

      • fwconsole restart

Set up systemd (startup script)

      • cat <<EOF > /etc/systemd/system/freepbx.service
        [Unit]
        Description=FreePBX VoIP Server
        After=mariadb.service
        [Service]
        Type=oneshot
        RemainAfterExit=yes
        ExecStart=/usr/sbin/fwconsole start -q
        ExecStop=/usr/sbin/fwconsole stop -q
        [Install]
        WantedBy=multi-user.target
        EOF
      • systemctl daemon-reload
      • systemctl enable freepbx

Asterisk and FreePBX 15 are installed on Debian 10 ! Go to the web interface at http://YOUR-IP to finish setup

몇 달 전, Hotspot 및 Service Server로 사용하던 Raspberry PI 3의 OS가 포함된 SD카드가 박살나는 사태가 벌어졌다. 

Raspbian streach 기반에다가 MMDVMHost, ircddbgateway를 어렵게 설치하고 apache2, php7.1, apache tomcat 8.5, samba 등 여러 서비스를 잘 돌리고 있었는데 결국은 그렇게 되었고 이 참에 H/W도 Raspberry Pi 4 4GB 모델로 교체 및 새로운 메모리에 OS를 올리고 다시 수동으로 설치하려 하였으나 MMDVMHost와 IRCDDBGateway, DstarRepeater 등 D-Star HotSpot에 필요한 S/W의 repository가 모두 죽어서 apt-get이나 deb 패키지로 설치할 수 없어졌다.

 



모 D-STAR 유저그룹 카페에 문의를 하였으나, 어떤 분이 어려운길을 갈려고 한다고 비아냥(?) 비슷한 댓글을 달아놓으시면서 본인이 가르쳐 주겠다고 메일주소를 보내라 하셔서 답신을 드렸으나 6개월째 깜깜 무소식이라는.....

(이상하게 뭐좀 잘 안다는 아마추어무선사는 .. 공유정신이 부족하다는 생각이 듬...)

 



Pi-Star는 내가 휴대용으로 쓰는 HotSpot의 전용OS로는 이미 쓰고 있었는데, 이건 본래 기능 외에 Samba, apache2 등 다른 기능은 일절 세팅이 어렵게 만들어져서 솔직히 내 입맛에는 맞지 않았었으나.. 

 

마침 심근경색 치료 및 퇴원 후 요양중 시간이 좀 남아서 PI-Star OS를 역으로 풀어내는 방법을 찾아보았고, 제작자인 MW0Andy Taylor (MW0MWZ)가 여기저기 modify를 하면서 lock 걸어놓은 것들을 하나하나 찾아 unlock 하고 그가 modify하면서 잘못 install된 부분도 debian repository standard로 교체하면서 내 입맛에 맞도록 사용하게 다시 Modify하게 되었다. 

 

참고로 Pi-Star를 500MHz 짜리의 Raspberry Pi Zero(ZumSpot과 쌍을 이루기 위한)에서 돌릴 때보다는 Raspberry PI 4 4GB 버전이 dashboard 및 setting change 후 refresh 하는 속도가 엄청 빠르다. (거의 바로바로, 서비스 재기동이 빨라서)

 



나는 raspberry pi 4를 raspbian base에 도메인과 DDNS를 이용한 연결이 필요하기 때문에 고정IP 세팅을 해야 하며, 속도로 인해 WiFi connection이 전혀 필요치 않고 Wired network이 필요하다. 또한 Samba를 이용한 NAS, apache2 및 php7.3으로의 웹서버, Pydio Disk server, postfix 및 roundcube를 사용한 Mail Server가 반드시 필요하다.

 

아래는 pi-star 4.1 버전 이상(buster based)에서 작업한 사항이다.

 

1. Image write to SD Card

2. Log-in pi-star account on SSH

3. sudo su - root

4. rpi-rw

 

[Static IP on eth0 - internal wired network]

/etc/dhcpcd.conf

insert this value

 

interface eth0
static ip_address=10.10.86.10/24
static routers=10.10.86.254
static domain_name_servers=10.10.86.254 8.8.8.8 8.8.4.4

 

[read only and temp partition disable]

1. sudo su - root

2. rpi-rw

3. nano /etc/fstab

4. /dev/mmcblk0p1 and /dev/mmcblk0p2 change option "ro" to "rw"

5. insert remark all mounted value "tmpfs".

6. save and reboot

 

[RAID Install]

1. sudo su - root

2. rpi-rw

3. apt-get update

4. apt-get install mdadm

5. mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb  - create raid partition.

6. mkdir /media/exDrive1

7. mount /dev/md0 /media/exDrive1

8. blkid - check UUID of created and mounted raid volume

9. insert UUID and mount directory to /etc/fstab

   ex) UUID="c593a5ec-c103-414a-b93b-e154527420b3"     /media/exDrive1         ext4    defaults,noatime,rw     0       0

10. reboot

 

[root enable]

1. sudo su - root

2. rpi-rw

3. passwd root --> input password

4. /etc/ssh/sshd.conf --> permitrootlogin NO to YES

 

[Samba install]

Must erase and purge installed samba service.

1. sudo su - root

2. rpi-rw

3. apt-get update

4. apt-get purge samba samba-common smbclient

5. rm -rf /etc/samba

6. apt-get upgrade

7. apt-get install samba samba-common smbclient

8. change /etc/samba/smb.conf

   insert this value

   [global]

    wins support = yes

   [NASData]
   path=/media/exDrive1/NASData
   browseable=Yes
   writeable=Yes
   only guest=no
   guest ok = no
   create mask=0777
   directory mask=0777
   public=no

   and another share directory disable.

9. systemctl restart smbd

 

[port change default Nginx webserver - pi-star dashboard]

change value /etc/nginx/sites-enabled/pi-star

1. root login

2. nano /etc/nginx/sites-enabled/pi-star

    server {
        listen 80 default_server;  --> listen 8080 default_server;

3. nano /etc/nginx/sites-enabled/capidate-portal

    server {
        listen 80; -->  listen 8080;

4. change port number you want

5. systemctl restart nginx

6. check connect modified port.

 

[Expand root partition]

※ pi-star is made only 2GB of root partition size. As default, You can't expand root partition.

   If the root partition free space is shortage, You can't install any program. apt-get can't install it.

1. root login

2. check the space. (more space 3MB)

3. apt-get update

4. apt-get install raspi-config

5. raspi-config

6. ask account, please input pi-star. It's not pi.

7. select "7. Advanced Option"

8. select "A1.Expand Filesystem"

9. quit raspi-config

10. reboot

11. after reboot, type "df -h". You will be look expanded root patition.

 

[install apache2]

1. root login

2. apt-get install apache2

3. ps -ef | grep apache2

   root@ds1nma-dstar(rw):~# ps -ef | grep apache2
    root      4772     1  0 20:35 ?        00:00:00 /usr/sbin/apache2 -k start
    www-data  4773  4772  0 20:35 ?        00:00:00 /usr/sbin/apache2 -k start
    www-data  4774  4772  0 20:35 ?        00:00:00 /usr/sbin/apache2 -k start
    root      5036  3654  0 20:36 pts/0    00:00:00 grep --color=auto apache2

4. It's ok.

 

[upgrade php7.0 to php7.3]

* pi-star is already installed php7.0. But I need php 7.3

1. root login

2. apt-get purge php*

3. apt-get update && apt-get upgrade

4. apt-get install php php-common

5. apt-get install php-cli php-fpm php-json php-mysql php-zip php-gd  php-mbstring php-curl php-xml php-pear php-bcmath

6. nano /etc/nginx/default.d/php.conf

   fastcgi_pass  unix:/var/run/php/php7.0-fpm.sock --> php7.3-fpm.sock

7. apt -y install libapache2-mod-php

8. a2enmod php7.3

9. systemctl restart apache2

 

[Install MariaDB]

1. root login

2. apt -y install mariadb-server mariadb-client

 

[change account and password of pi-star dashboard]

1. /var/www/.htpasswd - account id : password

2. password change only dashboard. encoded.

3. show id on dashboard - configure.php

       <form id="adminPassForm" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
    <table>
    <tr><th width="200"><?php echo $lang['user'];?></th><th colspan="3"><?php echo $lang['password'];?></th></tr>
    <tr>
    <td align="left"><b>naraymm</b></td>
    <td align="left"><label for="pass1">Password:</label><input type="password" name="adminPassword" id="pass1" onkeyup="checkPass(); return false;" size="20" />
    <label for="pass2">Confirm Password:</label><input type="password" name="adminPassword" id="pass2" onkeyup="checkPass(); return false;" />
    <br /><span id="confirmMessage" class="confirmMessage"></span></td>
    <td align="right"><input type="button" id="submitpwd" value="<?php echo $lang['set_password'];?>" onclick="submitPassform()" disabled="disabled" /></td>
    </tr>
    <tr><td colspan="3"><b>WARNING:</b> This changes the password for this admin page<br />AND the "pi-star" SSH account</td></tr>
    </table>
    </form>

 

[MMDVM recompile for solve HD44780 LCD not show]

* pi-star에 포함된 MMDVMHost를 사용해서는 HD44780 LCD가 동작하지 않는다. 새로 컴파일 하고 실행파일을 교체해야 한다.

replaced the MMDVMHost file wit a new one made like this.
1. cd ~
2. git clone https://github.com/g4klx/MMDVMHost.git
3. cd MMDVMHost
4. make clean
5. make -f Makefile.Pi.HD44780
6. rm /usr/local/bin/MMDVMHost

7. cp ./MMDVMHost /usr/local/bin/MMDVMHost (replace complied MMDVMHost)

8. reboot

라즈베리파이4와 집에 있는 4K 모니터와 4K TV에서 아무리 연결해도 화면이 표시되지 않는 현상이 보였다.

raspbian을 넣어도, Libreelec에서도 동일증상이었다.

 

다음의 설정으로 해결했다.

 

메모리 --> boot 드라이브 --> config.txt

hdmi_force_hotplug=1
config_hdmi_boost=4
hdmi_group=1

저장 후, 메모리를 기기에 다시 꽂고 전원을 켜면 화면이 표시될 것이다. 

raspbian 및 libreelec 모두 적용된다. 

File DB를 쓰던 원래의 솔루션이 이중화 조치를 하면서 DB까 꼬일 가능성이 농후해졌다.

그래서 두 서버의 중간에 공유스토리지를 두고, 두 서버간 공유가 필요한 파일과 경로는 

ln으로 링크를 주어 조치하였으나 톰캣에서 링크를 먹지 않음;;;

 

며칠을 쥐싸매다가 이거 한줄로 해결했다.

 

/conf/context.xml

 

<Context>

    <Resources allowLinking="true" />
</Context>

 

(이 글은 네이버카페 멋쟁이들의 레조동호회 http://cafe.naver.com/rezzolove 에 업로드된 본인의 게시물입니다.)

 

안녕하세요. 라디오맨 입니다.

 

오늘은 펜더 복원 후기를 올려봅니다. 뭐 전문업체 수준은 아니지만, 딱히 깔끔한건 아니지만

그런대로 괜찮아서 후기로 한번 올려봅니다.

 

2019.06.10 비오는 월요일 아침 출근길에 가벼운 접촉사고가 났습니다.

브레이크가 덜 밟힌 탓에 앞서가던 포터 적재함 경첩에 운전석 펜더가 찍혔습니다. 

상대차가 망가진건 아니라 그냥 넘어갔는데요,

나중에 블랙박스를 보니 좌회전하면서 옆차선에서 화물차가 끼어든거고 끼어들면서 제 차가 너무 

나아가면서 찍은거네요...ㅠ.ㅠ

 

아무튼 차 상태는 이렇게 되었습니다.





 

 

운전석쪽 펜더 한쪽이 긁히면서 눌러 들어가버렸습니다. 

 

제가 올린 게시글에 많은 분들께서 중고부품으로의 교환을 권해주셨습니다. 

이 글을 빌어 댓글 주신 여러분께 정말로 감사말씀 드립니다...^^

그런데 문제가, 제가 장한평시장을 발품해본건 많이 해봤는데 폐차장 발품을 해본적이 없습니다.

그리고 폐차장이 어디 있는지도 모르겠고 평일엔 시간도 안나서 참 애매하더라구요. 

 

카닥 앱에다가 사진을 올려봤더니 업체들이 하나같이 교환수리라고 해서 30~40만원 견적을 냅니다. 

불과 10년전만 해도 저런사고 한판에 15만원이면 하던 사람들이.. 요즘에는 외형복원집에서도 교환도색만

하나봅니다. 아무튼 비쌉니다...ㅠ.ㅠ 

 

어차피 이렇게 된거 복원을 한번 해보고 안되면 중고부품을 구해보자고 결정하였습니다.

계속 보다보니 찍히면서 눌러 들어간건 다시 눌러서 펴면 될 것 같고 찍힌 부분은 망치로 때리면 되지 

싶었습니다. 

 

 

 

일단, 옥X에서 이 두놈을 샀습니다. 가격은 15,600원.

이걸 받아놓고 주말을 기다리는데... 에구.. 이와중에 그 분이 오셨습니다. 헤드가스켓....ㅠ.ㅠ

 

우선, 토요일 아침에 퍼카 먼저 가서 헤드가스켓 수리부터 하고, 집에와서 펜더 복원작업을 시작합니다.

 

 

펜더를 분해하기 위해서는 우선 라이트를 탈거하고

바퀴 앞뒤로의 펜더커버의 나사를 모두 풀러줍니다. 바퀴 뒤 물받이도 제거합니다.

그리고 펜더 상단의 볼트 2개, 와이퍼 커버 안에 볼트 하나, 운전석 문 안쪽에 볼트 하나

그리고 물받이 옆에 볼트 2개, 마지막으로 운전석 방향 범퍼 안쪽에 너트 2개가 있는데 이 두개 푸는게

어려웠습니다. 운전석 방향 범퍼 볼트를 모두 풀고 범퍼를 세게 아래로 제껴야 휀더 볼트가 보이고 풀어낼 수 

있습니다. - 펜더볼트 위치를 알려주신 폭주님.. 감사드립니다^^

 

어쨌는 저렇게 풀어내고서는...

 

 

때리고 필때 펜더에 스크래치나 손상이 덜 가도록 바닥에 깨끗하고 두꺼운 박스를 

넓게 펴서 깔고 그 위에 펜더를 뒤집어 놓습니다. 그리고 직접 손상된 부분 주변에 눌린 부분을 펴봅니다. 

손으로 눌러보는데 잘 안펴집니다.

펜더를 뒤집어 놓고 발로 밟아봅니다. 최대한 몸무게를 사용해서 세게 눌러봅니다.

들어간 부분이 펴졌습니다. 발로 밟아서 일단 들어간 주변을 적당히 펴주고서

직접적으로 찍힌 부분은 망치로 세게 두들겨 줍니다. 

어느정도 펴졌다고 보일때까지 계속 누르고 두들겨주고 폅니다. 



 

그리고 다시 펜더를 차에 볼트 1개만 채워서 가조립을 해놓고 퍼티를 발라줍니다.

위에서 구매한 퍼티는 반드시 주제를 100으로 봤을때 경화제를 2만 섞어주라고 되어 있습니다.

사진을 못찍었는데 사실 저거 다 못씁니다. 찌그러진 부분을 메우기 위해서 주제를 큰 주걱으로 

두 주걱정도만 바가지에 떠내고 그거에 2% 정도 양의 경화제만 짜서 잘 섞어줍니다.

퍼티를 잘 섞으면 약간 바나나우유 색을 띕니다. 

 

손상된 부분에 빠대를 바르고 곡선이 살아나도록 잘 펴주면서 발라줍니다. 

이 때, 헤라를 사용해야 합니다. 저는 예전에 썬팅 할때 사놨던 헤라가 있어서 그걸 썼습니다. 

주의할 점은 경화제를 섞은 퍼티는 생각보다 엄청 빨리 굳기 때문에 발라주면서 최대한 공기구멍이 없도록

펴줘야 하겠습니다. 

 

아무튼, 이렇게 잘 발라주고 어느정도 모양이 갖춰지고 굳어지면 다시 펜더를 탈거합니다. 

 

 

굳어진 퍼티를 부드럽게 펴줘야 하는데

여기서 실수를 하나 했습니다. 

사포질을 굵은걸로 어느정도 해놓고 고운걸로 정리해야 하는데

사포를 400방 짜린 안사고, 200방만 잔뜩 사놨습니다.. ㅠ.ㅠ

 

할 수 없이 펜더를 집으로 갖고 들어와서는 그라인더로 대충 모양을 만들고 

집에서 TV를 보면서 200방짜리 사포로 1시간을 밀어야 했습니다. 

스프레이로 물을 좀 뿌려주면서 밀어주니 모양이 좀 나옵니다. 

손에 힘 많이 가더라구요...

 

갈아낼 때, 밖에서 하는거면 상관없는데 저처럼 귀찮다고 집안에 갖고 들어와서 하는거라면

청소기를 켜놓고 청소기 노즐을 한손에 쥐고서 다른 손으로 사포질을 해주면 먼지도 안날리고

좋습니다. 

 

아무튼 퍼티정리는 이렇게 했습니다. 



 

퍼티작업이 완료된 펜더를 옥상에 가져가서 퍼티가 굳은 곳을 중심으로 카페인트를 뿌려줍니다. 

카페인트도 사놓은게 있어서 그냥 사용했고, 색상 페인트를 뿌려준 다음 한 10분정도 있다가 투명페인트를

뿌려주는 작업을 두 세번 반복합니다. 

그리고 30분정도 말리고서는...

 

 

펜더를 탈거의 역순으로 장착합니다. 

해보니까 볼트를 바로 꽉 조이면 안되고 상단 3개와 물받이쪽 2개를 살짝 조여놓고 

펜더를 최대한 뒤쪽으로 당겨주면서 운전선 문 안쪽 너트를 고정하고 나머지를 조여야 겠더라구요. 

그렇게 해서 조립을 완료하고 한 번 봅니다. 

 

 

사진을 보면 가까이에서 보면 상당히 티가 좀 나는데

멀찌감치서 보면 잘 모를 것도 같습니다. 

 

퍼티질 초짜가 저렇게 해놓으니 좀 울퉁불퉁 한데 나중에 한가할 때 그라인더로 다시 한번 갈아내고

퍼티를 앏게 한번 더 치고서 페인트를 다시 뿌려보면 좀 나아질듯도 합니다. 

 



 

이로서 4시간만에 펜더 복원작업 후기를 마칩니다.

 

감사합니다..^^

Cisco 스위치 장비에 Spanning Tree가 켜져있으면 네트워크가 연결되는데 굉장히 느리다.
어차피 PC:스위치에서는 의미없는 기능이므로 Off 해야 욕을 안먹는다.


  1. 스위치를 콘솔로 연결한다.
  2. Putty 띄워서 COM포트로 붙인다.
  3. sh run(엔터)을 실행해서 spanning-tree 설정을 확인한다.
    -
    이전설정은 spanning-tree mode rapid-pvst, spanning-tree extend system-id 만 존재.
  4. enable (엔터)
  5. 패스워드입력 (엔터)
  6. config terminal (엔터)
  7. spanning-tree portfast default (엔터)
  8. end(엔터)
  9. 다시 sh run(엔터)를 실행해서 spanning-tree portfast default 또는 사진처럼 spanning-tree portfast edge default 가 표기되나 확인
  10. exit(엔터)
  11. 콘솔케이블 뽑는다

앞서 구축된 IP-PBX가 라즈베리파이3에 올렸는데, 오래 가동했던 기기라 그런지 발열이 심한 단점이 있다. Fan을 설치하긴 했는데 Fan이다보니 방에서 돌리기에는 소음이 신경쓰인다.

그래서 더 저전력으로 돌면서 크기가 작은 라즈베리파이 제로 W로 교체하였다.

기본적인 H/W는 비슷하고 Raspbian OS를 공유하기 때문에 기존 파이3에서 WiFi로 PBX가 세팅되었다면 SD카드를 파이제로W로 꽂는것으로 그대로 사용할 수 있다.

기존의 파이3 이다. Fan이 무식하게 크다. 고장품이라 Fan 없으면 10분만에 뻗는다.

이번에 산 파이제로W이다.
크기가 정말 작다. USB도 마이크로USB로 HDMI도 마이크로HDMI로 변경되었다. 마이크로USB단자가 USB Host용과 전원용이 구분되어 있으니 주의하자.

그래도 어느정도 발열이 있으니 CPU/APU에 방열판 하나를 붙였다. 원래 방열판이 없다. 나는 파이제로를 주문할때 구리방열판을 하나 함께 주문했다. 다해야 배송료 포함 3만원 쪼금 넘는다.

여기에 파이3에 꽃았던 SD카드를 그대로 옮겨 꽂는다.

크기비교를 위해 iQOS 담배와 비교해보자. 정말 작다.
이런게 1GHz CPU와 512MB RAM이 탑재되고 서버프로그램을 구동할수 있다. 심지어는 Kodi도 된단다.

그리고 책상아래에 양면테이프로 붙였다. ㅎ
케이스는 귀찮아서 안샀다.
나중에 기가비트 허브나 공유기에 삽입할 예정이다.


전원을 켜면 설정되있던 WiFi로 연결되어 Putty 연결이 가능하다.
FreePBX도 설정했던 IP로 접속된다.

나는 발열을 최소화 하기 위해 /boot/config.txt에 core_freq=700 으로 700MHz로 고정했다. 500을 줬더니 PBX가 기어다닌다.
그리고 internal bluetooth를 disable해버렸다. 어차피 IP PBX에 BT는 필요없다.

일단 PBX는 됬으니까 게이트웨이만 오면 된다. ㅎㅎ

1. H/W

   1) Raspberry Pi 3 

   2) Cisco 7975G


2. S/W

   1) Raspbx (http://www.raspberry-asterisk.org/)


3. Method


1) Download OS Image from http://www.raspberry-asterisk.org/

    - http://www.raspberry-asterisk.org/downloads/

    - Raspbian Stretch based

    - PJSIP/Chan_SIP , Chan_SIP is port 5161.


2) Burn image to SD Card


3) Boot


4) Set network static IP to eth0 or wlan0

    - /etc/dhcpcd.conf

    - interface wlan0

      static ip_address=DEVICE_IP/24

      static routers=GATEWAY_ADDRESS

      static domain_name_servers=DNS_SERVER_ADDRESS


5) run raspi-config
    - WI-FI SSID Setting 
    - set time zone to Seoul
    - extend file system for SD Card

6) reboot

7) update OS
   - raspbx-upgrade
   - fwconsole ma upgrade

8) reboot

9) connect FreePBX admin page

10) create extension of Chan_SIP 
     - same insert to Display name , CID, Secret, Password       

 



11) Set Asterisk SIP Setting 

     - NAT Setting from Detect Network Setting

     - IP Configuration of Chan_SIP tab set Dynamic IP, and Insert Dynamic Host

     - Advanced General Setting of Chan_SIP tab, Must set Enable TCP to yes


12) TFTP Install and Samba setting


apt-get install xinetd tftpd tftp

touch /etc/xinetd.d/tftp

nano /etc/xinetd.d/tftp

service tftp

{

protocol        = udp

port            = 69

socket_type     = dgram

wait            = yes

user            = nobody

server          = /usr/sbin/in.tftpd

server_args     = /tftpboot

disable         = no

}


mkdir /tftpboot

chmod -R 777 /tftpboot

chown -R nobody /tftpboot

/etc/init.d/xinetd restart

chmod -R 777 /tftpboot

nano /etc/samba/smb.conf

[TFTP]

   comment = Phone TFTP

   browseable = no

   path = /tftpboot

   guest ok = yes

   read only = no

   create mask = 0644

   directorymaks = 0755


/etc/init.d/samba restart


13) Copy Cisco Phone setting and firmware to TFTP Server

      

tftp-Cisco7975G.zip



14) rename SEPPHONEMACADDRESS.cnf.xml, 

     - PHONEMACADDRESS to your MAC address, (ex, SEP0080CE8E22AE.cnf.xml)

     

15 ) Modify XML 


<device>

    <fullConfig>true</fullConfig>

    <deviceProtocol>SIP</deviceProtocol>

    <sshUserId>admin</sshUserId>

    <sshPassword>cisco</sshPassword>

    <devicePool>

        <dateTimeSetting> 

            <dateTemplate>D/M/YYA</dateTemplate> 

            <timeZone>Tokyo Standard Time</timeZone> 

            <ntps> 

                <ntp>

                    <name>203.12.160.2</name> 

                    <ntpMode>Unicast</ntpMode> 

                </ntp>

            </ntps>

        </dateTimeSetting>

        <callManagerGroup>

            <tftpDefault>true</tftpDefault>

            <members>

                <member priority="0">

                    <callManager>

                        <ports>

                            <ethernetPhonePort>2000</ethernetPhonePort>

                            <sipPort>5160</sipPort>

                            <securedSipPort>5161</securedSipPort>

                        </ports>

                        <processNodeName>YOURPBXADDRESS</processNodeName>

                    </callManager>

                </member>

            </members>

        </callManagerGroup>

    </devicePool>

    <commonProfile>

        <phonePassword></phonePassword>

        <backgroundImageAccess>true</backgroundImageAccess>

        <callLogBlfEnabled>0</callLogBlfEnabled>

    </commonProfile>

    <loadInformation>SIP75.9-4-2SR3-1S</loadInformation>

    <vendorConfig>

        <disableSpeaker>false</disableSpeaker>

        <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>

        <pcPort>0</pcPort>

        <settingsAccess>1</settingsAccess>

        <garp>0</garp>

        <voiceVlanAccess>0</voiceVlanAccess>

        <videoCapability>0</videoCapability>

        <autoSelectLineEnable>0</autoSelectLineEnable>

        <daysDisplayNotActive>1,7</daysDisplayNotActive>

        <displayOnTime>10:30</displayOnTime>

        <displayOnDuration>06:05</displayOnDuration>

        <displayIdleTimeout>00:05</displayIdleTimeout> 

        <displayOnWhenIncomingCall>1</displayOnWhenIncomingCall>

        <webAccess>0</webAccess>

<sshAccess>0</sshAccess>

        <spanToPCPort>1</spanToPCPort>

        <loggingDisplay>1</loggingDisplay>

        <loadServer></loadServer>

    </vendorConfig>

    <userLocale>

        <name>English_United_States</name>

        <uid>1</uid>

        <langCode>en_US</langCode>

        <version>1.0.0.0-1</version>

        <winCharSet>iso-8859-1</winCharSet>

    </userLocale>

    <networkLocale>United_States</networkLocale> 

    <networkLocaleInfo> 

        <name>United_States</name> 

        <uid>64</uid> 

        <version>1.0.0.0-1</version> 

    </networkLocaleInfo> 

    <deviceSecurityMode>1</deviceSecurityMode>

    <authenticationURL>http://YOURPBXADDRESS/xmlservices/authentication.php</authenticationURL>

    <directoryURL>http://YOURPBXADDRESS/xmlservices/PhoneDirectory.php</directoryURL>

    <idleTimeout>0</idleTimeout>

    <idleURL></idleURL>

    <informationURL>http://YOURPBXADDRESS/xmlservices/index.php</informationURL>

    <messagesURL></messagesURL>

    <proxyServerURL></proxyServerURL>

    <servicesURL>http://naraymm.iptime.org/xmlservices/index.php</servicesURL>

    <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>

    <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>

    <dscpForCm2Dvce>96</dscpForCm2Dvce>

    <transportLayerProtocol>1</transportLayerProtocol>

    <capfAuthMode>0</capfAuthMode>

    <capfList>

        <capf>

            <phonePort>3804</phonePort>

        </capf>

    </capfList>

    <certHash></certHash>

    <encrConfig>false</encrConfig>

    <sipProfile>

        <sipProxies>

            <backupProxy>YOURPBXADDRESS</backupProxy>

            <backupProxyPort>5160</backupProxyPort>

            <emergencyProxy>YOURPBXADDRESS</emergencyProxy>

            <emergencyProxyPort>5160</emergencyProxyPort>

            <outboundProxy>YOURPBXADDRESS</outboundProxy>

            <outboundProxyPort>5160</outboundProxyPort>

            <registerWithProxy>true</registerWithProxy>

        </sipProxies>

        <sipCallFeatures>

            <cnfJoinEnabled>true</cnfJoinEnabled>

            <callForwardURI>x--serviceuri-cfwdall</callForwardURI>

            <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>

            <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>

            <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>

            <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>

            <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>

            <rfc2543Hold>false</rfc2543Hold>

            <callHoldRingback>2</callHoldRingback>

            <localCfwdEnable>true</localCfwdEnable>

            <semiAttendedTransfer>true</semiAttendedTransfer>

            <anonymousCallBlock>2</anonymousCallBlock>

            <callerIdBlocking>2</callerIdBlocking>

            <dndControl>0</dndControl>

            <remoteCcEnable>true</remoteCcEnable>

        </sipCallFeatures>

        <sipStack>

            <sipInviteRetx>6</sipInviteRetx>

            <sipRetx>10</sipRetx>

            <timerInviteExpires>180</timerInviteExpires>

            <timerRegisterExpires>3600</timerRegisterExpires>

            <timerRegisterDelta>5</timerRegisterDelta>

            <timerKeepAliveExpires>120</timerKeepAliveExpires>

            <timerSubscribeExpires>120</timerSubscribeExpires>

            <timerSubscribeDelta>5</timerSubscribeDelta>

            <timerT1>500</timerT1>

            <timerT2>4000</timerT2>

            <maxRedirects>70</maxRedirects>

            <remotePartyID>false</remotePartyID>

            <userInfo>None</userInfo>

        </sipStack>

        <autoAnswerTimer>1</autoAnswerTimer>

        <autoAnswerAltBehavior>false</autoAnswerAltBehavior>

        <autoAnswerOverride>true</autoAnswerOverride>

        <transferOnhookEnabled>true</transferOnhookEnabled>

        <enableVad>false</enableVad>

        <preferredCodec>g711u</preferredCodec>

        <dtmfAvtPayload>101</dtmfAvtPayload>

        <dtmfDbLevel>3</dtmfDbLevel>

        <dtmfOutofBand>avt</dtmfOutofBand>

        <alwaysUsePrimeLine>false</alwaysUsePrimeLine>

        <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>

        <kpml>3</kpml>

        <stutterMsgWaiting>1</stutterMsgWaiting>

        <callStats>false</callStats>

        <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>

        <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>

        <startMediaPort>16384</startMediaPort>

        <stopMediaPort>32766</stopMediaPort>

        <voipControlPort>5160</voipControlPort>

        <dscpForAudio>184</dscpForAudio>

        <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>

        <dialTemplate>dialplan.xml</dialTemplate>

        <phoneLabel>YOURNAME</phoneLabel>

        <natEnabled>false</natEnabled>

        <sipLines>

            <line button="1">

                <featureID>9</featureID>

                <featureLabel>YOURACCOUNTID</featureLabel>

                <name>YOURACCOUNTID</name>

                <displayName>YOURACCOUNTID</displayName>

                <contact>2003</contact>

                <proxy>USECALLMANAGER</proxy>

                <port>5160</port>

                <autoAnswer>

                    <autoAnswerEnabled>2</autoAnswerEnabled>

                </autoAnswer>

                <callWaiting>3</callWaiting>

                <authName>YOURACCOUNTID</authName>

                <authPassword>YOURACCOUNTPASSWORD</authPassword>

                <sharedLine>false</sharedLine>

                <messageWaitingLampPolicy>1</messageWaitingLampPolicy>

                <messagesNumber>8555</messagesNumber>

                <ringSettingIdle>4</ringSettingIdle>

                <ringSettingActive>5</ringSettingActive>

                <forwardCallInfoDisplay>

                    <callerName>true</callerName>

                    <callerNumber>false</callerNumber>

                    <redirectedNumber>false</redirectedNumber>

                    <dialedNumber>true</dialedNumber>

                </forwardCallInfoDisplay>

            </line>

        </sipLines>

    </sipProfile>

</device>


15) Set Alternate TFTP to On, and Insert TFTP Server address to PBX IP Address


16) Reboot Phone, Phone will upgrade and load XML


17) Enjoy