AWS IVS 테스트 중 nodejs로 재생토큰 생성해 봤는데 혹시 나중에 참조할까 싶어 메모용..

const fs = require("fs");
const jwt = require('jsonwebtoken');


privateKey = fs.readFileSync('./private-key.pem');

expire = parseInt(new Date().getTime() / 1000, 10) + 60

payload = {
	"aws:channel-arn": "arn:aws:ivs:ap-northeast-2:538111149902:playback-key/vzVAAA2pkebk",
	"aws:access-control-allow-origin": "*",
	"exp": expire,
}

token = jwt.sign(payload, privateKey, { algorithm: 'ES384' });

url = "https://3fefaaab8240.ap-northeast-2.playback.live-video.net/api/video/v1/ap-northeast-2.538111149902.channel.86CWWWWOCiaSr.m3u8?token=" + token

console.log({url})

AWS의 Lightsail을 하나 쓰고 있는데, 전과는 다른 이유로 갑자기 SSH 로그인이 되지 않는 문제가 발생했다.

This account is currently not available

음... 이건... /etc/passwd에서 로그인을 안되게 해 설정해 놓은 경우 그러던데..
그런데 내가 만지지도 않았던거 같은데 왜??

전에 비슷한 경험을 한 게 있어 큰 당황 없이 해결해 본다.

1. 스냅샷을 뜬다.
2. 스냅샷으로 새 인스턴스를 생성하며, 시작스크립트에 다음처럼 명령을 넣는다. (그렇게 되면 인스턴스가 새로 시작될때 루트 권한으로 해당 명령이 실행된다. 해당 명령은 ubuntu 계정의 쉘을 bash로 세팅해서 로그인이 가능하게 하는 명령이다.)

3. 새 인스턴스에 SSH가 로그인이 되는것을 확인한 후 기존 인스턴스를 지운다.
4. 기존 인스턴스에 설정된 고정아이피를 새 인스턴스에 할당한다.

해결은 잘 됐다..

그런데... 왜 자꾸 이런 일이 일어나지? 설마 누가 자꾸 만지나??? 

만들어놨다가 잠깐 쓰고, 깜빡하고 있었는데.. 아 이런거 만들었었지..

micro usb로 RF모듈에 전원이 공급이 되고,
RF모듈이 무선리모콘의 신호를 받으면 MCU(attiny85)에 일시적으로 전원이 공급이 되게 된다.
MCU에 프로그래밍된 펌웨어에 따라서 특정 적외선 리모콘 신호를 IR Transmitter 모듈을 통해 전송한다.

이걸 뭐하러 만들었냐면.. 아파트 공동현관을 여는 버튼이 월패드/주방화면 두군데 있는데 걸어가기가 너무 귀찮아서...
방에서 RF리모콘을 누르면 주방의 기기에 문여는 적외선 리모컨 신호를 쏴서 공동현관을 열도록 하는 기능을 했었다.
하지만 좀 지저분하게 생겨서 손님이 와서 치워놨었는데... 그냥 구석에 들어가 나오지 못하게 된것이었다.

그냥 제품화된 중국산 적외선 트랜스미터를 사는 게 좋을것 같다ㅋ

집에 안쓰고 굴러다니던 보조배터리가 있었습니다. 아마도 어딘가에서 공짜로 받은것 같은데 출처를 모르겠네요.

조금 작은편이고 샤오미 로고가 찍혀 있습니다만.. 샤오미의 짝퉁으로 보입니다.
샤오미는 그래도 중국산중에서는 마감이 괜찮은편인데 어설프게 돼 있습니다.

뒷면에 보면 간단한 스펙이 있습니다. 용량이 10000mAh라지만..
충전되는 배터리가 3.7V... USB의 기본 출력인 5V출력을 위해서 승압을 하면 효율도 떨어질텐데...
그리고, 유럽(CE)및 미국 인증(FCC)을 받았다는것도 뻥일것 같네요. 이런 싸구려에..

가운대 플라스틱 부분을 밀면 열수 있을것 같아서 열심히 밀었습니다만 내용물이 나오지 않네요.. 어쩔수 없이 배를 갈랐습니다.
니퍼로 열심히...

충전회로와 배터리가 보이기 시작합니다. 계속 아래로 잘라 나갔습니다.

가장 기본적인 충전 방전 회로만 가지고 있는 단순한 구조 입니다.

이상, 보조배터리 분해기였습니다.

현역에서는 물러났지만, 아직도 테스트기기 겸 공공기관 사이트 접속용 윈도우머신 역할을 하고 있는 2011년 맥북이 있습니다.

충전기와 노트북 사이를 연결해주는 케이블이 다들 아시는 고질적인 문제가 많아 자꾸 케이블이 까지고 헤지고 하는 문제가 생깁니다.
보수하고 보수하면서 써보다가 최근 구입한 맥북의 USB-C형 충전기를 보면서, 저렇게 개조해볼까? 하는 생각이 들었습니다.

커넥터는, 일반 DC 어뎁터용으로 하기로 했습니다. USB나 USB-C 타입으로 하면 혼동할수 있고,
실수로 잘못된 기기를 꽂으면 해당 기기가 위험해질수도 있으니까요.
일단 재료를 이렇게 정했습니다.

재료비는 만원 미만인것 같네요.
이렇게 구성하면 맥북과 노트북 사이의 줄이 고장나면 줄만 교체하면 될것 같습니다.

충전기 줄을 다 잘라내고, 충전기를 분해했습니다. 안에 그냥 본드를 잔뜩 발라 붙여놓았으므로 그냥 강제로 벌려 열었습니다.

그리고 DC 소켓을 납땜하고 구겨 넣었습니다. 

그리고 닫습니다. DC 소켓은 앞뒤로 움직이지 않게 끼워두었습니다.
모양이 좋진 않네요ㅎ 테스트 후 좀 다듬긴 했는데.. 그래도 모양이 좋진 않네요ㅋ

이렇게 뺐다 끼웠다 할수 있습니다.
반대쪽은 DC커넥터와 magsafe2를 변환해주는 어뎁터를 끼워 맥북에 대봅니다.

잘 충전이 되네요.. 이제 선이 문제가 생기면 선만 교체하면 될것 같습니다.

이상 맥북 충전기 개조 후기였습니다.

집에서 계속 굴러다니던 액션캠인 SJ4000WiFi를 분해해 보았다.

SJ4000WiFi 회로 앞면

스피커는 분해하다가 납땜부분이 떨어졌지만 다시 납땜하면 문제는 없다.
와이파이 모듈은 RTL8188ETV를 사용한 모듈이다. 802.11bgn 2Ghz대역에 USB1.0/1.1/2.0인터페이스를 지원한다. 

rtl8188etv.pdf
0.38MB

와이파이 안테나는 메인회로에 프린트하지 않았고 별도의 필름회로로 구현해 놓았다.

SJ4000WiFi 뒷면

 메인 프로세서는 NT96655BG이다. 영상처리에 특화된 기능을 포함하고 있고, 액션캠에 필요한 모든 기능을 다 가지고 있는듯 하다.

Novatek NT96655 Data Sheet.pdf
1.40MB

그 아래에는 플래시 메모리로 추정하지만 관련 자료를 찾지는 못했다. 하지만 저 메인 프로세서와 함께 많은 제품에 응용되고 있는듯 하다.

렌즈 부분을 돌렸더니 렌즈 부분이 스크류처럼 풀려 분리되었고, 가장 아래쪽에 IR(적외선) 필터가 보여 박살내어 제거한 후에 다시 닫았더니
리모콘의 적외선 불빛이 찍힌다. 어두운 곳에서 적외선 플래시를 비추고 이 카메라로 찍으면 야간 촬영이 가능할듯 하다ㅎ

SJ4000WiFi 분해된 상태에서의 동작 확인

 

아이폰이 활성화 됐을 때 적외선을 쏘는 모습을 적외선 필터가 제거된 SJ4000WiFi로 촬영해 보았다.

구글에서 최근에 64비트를 지원하지 않은 앱을 64비트 지원하도록 업데이트 하라는 메일을 보내왔는데,
스토어에 올려진 앱 소스코드를 찾지 못했다.

앱 자체는 간단한 프로그램이라 금방 다시 개발하면 됐지만,
앱에 서명을 같은 키스토어로 해야 업로드가 되는데 키스토어는 어쩔수가 없었다.

그래서 안드로이드 스튜디오에서 새로 키스토어 파일을 생성한 후,
아래 명령으로 pem 파일로 변환하였다. (구글에 신규 키스토어 제출시 pem파일로 전달해야 함, 빨간색 부분은 각자 변경해서 사용하세요. )

 keytool -export -rfc -alias alias -file newkeystore.pem -keystore keystore.file

그리고 나서, 아래 페이지에 접속해 간단히 설명후 키스토어 pem파일을 첨부하여 접수하면
약 2~3일 후 신규 키스토어를 사용해 앱을 업로드할 수 있게 된다.

https://support.google.com/googleplay/android-developer/contact/otherbugs

 

일반적인 문제 - Play Console 고객센터

 

support.google.com

 

맥에 윈도우 키보드를 연결하면 Home키를 누르면 Page Up처럼 동작하고 End키를 누르면 Page Down처럼 이동하는 등 문제가 많습니다.

그런경우 터미널을 열어 아래처럼 명령을 내려 키를 리매핑 해보세요.

mkdir -p $HOME/Library/KeyBindings
echo '{
/* Remap Home / End keys to be correct */
"\UF729" = "moveToBeginningOfLine:"; /* Home */
"\UF72B" = "moveToEndOfLine:"; /* End */
"$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
"$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
"^\UF729" = "moveToBeginningOfDocument:"; /* Ctrl + Home */
"^\UF72B" = "moveToEndOfDocument:"; /* Ctrl + End */
"$^\UF729" = "moveToBeginningOfDocumentAndModifySelection:"; /* Shift + Ctrl + Home */
"$^\UF72B" = "moveToEndOfDocumentAndModifySelection:"; /* Shift + Ctrl + End */
}' > $HOME/Library/KeyBindings/DefaultKeyBinding.dict

아주 깔끔하게 문제가 해결됩니다~

맥(MacOS)에서 창이 화면 밖으로 나가 돌아올 생각이 없을 때 참 곤란하다..

결국, 맥의 스크립트 편집기로 

tell application "System Events" to tell window 1 of process "Telegram"
    set position to {30, 50}
end tell

이런 코드를 짜서 실행했더니 보이는 영역으로 돌아왔다.

가끔 외부 모니터를 쓸 때 발생하는 문제인 듯 하다.

Objective-C로 개발한 프로젝트에서 Swift라이브러리를 쓰다 보면 이런 에러를 만날때가 있다.

Linker error:
ld: warning: Could not find auto-linked library 'swiftFoundation'
ld: warning: Could not find auto-linked library 'swiftDarwin'
ld: warning: Could not find auto-linked library 'swiftCoreFoundation'
ld: warning: Could not find auto-linked library 'swiftCore'
ld: warning: Could not find auto-linked library 'swiftCoreGraphics'
ld: warning: Could not find auto-linked library 'swiftObjectiveC'
ld: warning: Could not find auto-linked library 'swiftDispatch'
ld: warning: Could not find auto-linked library 'swiftSwiftOnoneSupport'
Undefined symbols for architecture arm64:

뭐 이유는 스위프트 라이브러리를 자동으로 링크할 수 없다는 뜻이겠지만, 원인은 Objective-C와 Swift간 브릿지가 없어서 발생된다.

복잡한 해결 방법이 있지만 가장 쉽게 해결하는 방법은
프로젝트에 빈 Swift 파일을 하나 만들어 추가해주면 된다. 생성할때 브릿지 헤더를 생성할거냐고 물어볼때 생성하겠다고 해줘야 한다.

갑자기 잘 쓰던 트랙패드가 어느순간 먹통이었다. 트랙패드로 움직일수는 있는데 클릭(?)이 안되는 문제..

하드웨어적으로 눌러지지 않는다 라는 느낌이라 X됐다... 서비스 받아야 하는건가 하고 생각하다가.

PRAM리셋 해도 안되고, SMC리셋을 하니 정상으로 돌아옴.

 

개인적으로, 업무적으로 AWS를 사용하고, 그중에 이번에 문제가 발생한 것은 Lightsail 이었다.

거의 아마존 EC2와 비슷한 시스템인데 EC2에 비해 단순하게 만들어진 시스템인것 같다.


아무튼, Lightsail에 생성한 인스턴스 중에서 알 수 없는 이유로 SSH접속을 할수 없는 게 하나 있었는데 바쁜 업무때문에 손도 못대고 있었다.

Connection closed by xx.xxx.xxx.xxx port 22


그러다 어제 문득 돈내고 쓰는 상품을 이렇게 방치해야되나 싶은 생각이 들어서 AWS 지원센터에 물어봤더니...

결국 오늘 돌아온 대답은 SSH포트를 방화벽에서 열었냐는..

지금까지 SSH 잘 접속했었는데?? 그리고 설마 그것도 확인 안해봤을까...


구글링을 열심히 해봤는데 특별한 답을 못찾았다가.. 결국 찾았다.

https://forums.aws.amazon.com/thread.jspa?threadID=251943


과정을 간단하게 설명하면 이렇다.


1. 문제가 생긴 인스턴스를 스냅샷을 뜬다.

2. 스냅샷을 이용해서 인스턴스를 생성하는데, 생성된 인스턴스 시작시에 openssh를 새로 설치하는 명령을 실행하도록 한다.
   (캡쳐를 깜빡했는데 중간쯤에 열어서 입력하는 부분이 있음)

#!/bin/bash
sudo apt-get remove openssh-client openssh-server
sudo apt-get install openssh-client openssh-server

3. 완료.


결국... 접속됨. 잘됨.


잊지 않겠다. AWS...

한 2주 전? 덕*** 이라는 국내 업체를 국내에서 정식 판매되는 3D 프린터 Flashforge Finder 를 구입했습니다. 

외국에서 평가도 좋고 국내에서도 가정용으로 많이 사용하는 제품으로 확인했습니다.
당연히 와이파이 기능으로 원격으로 작업을 시작하고 상태를 확인할 수 있다는 점도 좋았습니다.
단, 베드가 좀 작은면이 좀 있지만...



이렇게 생긴 제품인데요... 받고나서 기쁜 마음으로 출력물 테스트를 두어번 한 다음에 알게 됐습니다.

와... 와이파이 기능이 없.. 어.... 워.. 원래 있는 제품 아니었어???


네, 카페에 글을 찾아보니 국내에 출시하면서 와이파이 모듈이 제거돼 판매된다고 합니다.
아마도 와이파이 모듈 관련해서 전파인증을 받기 싫었거나 문제가 있었겠죠?

해외 직구하면 비슷한 금액에 와이파이 되는걸로 살수 있었는데.. 젠장..


구글링을 아무리 해봐도 어떤 와이파이 모듈을 쓰는지 찾을수가 없었습니다.

그러다가 PCB 사진을 발견했어요.

PCB 우측에 모듈 형태로 달려있는 저 부분이 와이파이 모듈로 예상되었습니다.


실제로 확인을 해보니 제 3D 프린터에는 저 부분이 비어 있었습니다.

요렇게...


휴.. 그럼 이게 맞는건가? 저놈만 찾아서 달면 되는건가? 그런데 어떻게 찾아내지?

그러다가 제작사 사이트의 유저가이드 pdf 파일을 보다가 와이파이 맥 어드레스를 발견했습니다.



참고로 와이파이나 블루투스같은 무선 기기의 맥 어드레스는 등록을 하게 돼 있고 IEEE에서 관리되고 있습니다. 

맥 어드레스 등록 목록: http://standards-oui.ieee.org/oui.txt

물론 기기마다 다 등록은 하지는 않고 각 회사마다 앞 6자리를 각자의 코드로 갖는것 같습니다.


유저가이드에서 찾은 맥 어드레스는 FC:3D:FD로 시작하네요.


찾아보니 모듈의 제조사는 중국의 SHENZHEN BILIAN ELECTRONIC CO., LTD 라고 나왔습니다!


그리고 구글링으로 저 회사에서 만든 와이파이 모듈을 검색해보니 FCC에서 BL-R8188EU8 이라는 모듈이 나오네요.

https://fccid.io/S8JBLR8188EU8A/


저 위에 있는 보드 사진에 달려있는거하고 비교해보니 비슷한 것 같네요.


바로 모듈을 구입해서... 드디어! 오늘 도착했습니다. (혹시 몰라서 두개...)

메인 칩셋은 유명한 리얼텍꺼네요.



그리고 3D 프린터의 뒷 뚜껑을 열고, 바로 장착!

비포 앤 에프터 사진입니다.


그리고 전원을 켜보니 보이지 않던 와이파이 메뉴도 나오고,


제품 정보를 확인해보니 와이파이 맥 어드레스 정보도 나오고, 


원격으로 작업 시작도 되고 모니터링도 모두 됩니다!


휴.. 다행히 해피엔딩으로 끝났네요.



'Electronic > Hacking' 카테고리의 다른 글

때늦은 XBOX개조질;;;  (2) 2007.05.19

이 글을 보신분 중에서 한분에게 Genuino 101 보드를 드립니다.

MicrocontrollerIntel Curie
Operating Voltage3.3V (5V tolerant I/O)
Input Voltage (recommended)7-12V
Input Voltage (limit)7-17V
Digital I/O Pins14 (of which 4 provide PWM output)
PWM Digital I/O Pins4
Analog Input Pins6
DC Current per I/O Pin20 mA
Flash Memory196 kB
SRAM24 kB
Clock Speed32MHz
LED_BUILTIN13
FeaturesBluetooth LE, 6-axis accelerometer/gyro
Length68.6 mm
Width53.4 mm
Weight34 gr.

현재는 단종된 보드로 보입니다만 블루투스 4.0에 가속도 자이로 센서가 내장되어 있다는 장점이 있네요.


비밀 댓글로 손 들어 주세요~

'Electronic > Arduino' 카테고리의 다른 글

Genuino 101 프로그래밍 에러 해결.  (0) 2018.12.22
일이 안되니 뻘짓만 한다 ㅠㅠ  (0) 2013.02.16

이런거 가지고 놀기 좋아한다고 뜬금없이 다른 보드와 함께 선물받은 Genuino 101 보드.

좀 시대 지난 보드지만 그래도 다른 보드와 다른점도 있고(Intel® Curie™/x86 (Quark) and a 32-bit ARC architecture core, both clocked at 32MHz.),
나름 BLE도 내장하고 있다.

테스트로 한번 blink 코드를 올려보려 하는데 자꾸 에러가 난다.

# arduino101load -dfu=/Users/heisice/Library/Arduino15/packages/arduino/tools/dfu-util/0.9.0-arduino1 -bin=/var/folders/3v/62sy5_5j1b72zgmg3wrnll6c0000gn/T/arduino_build_60893/Blink.ino.bin -port=/dev/cu.usbmodem14201 -v -ble_fw_str="ATP1BLE00R-1631C4439" -ble_fw_pos=169984 -rtos_fw_str="" -rtos_fw_pos=0 -core=2.0.0
arduino101load 2.0.1 - compiled with go1.7.5
Starting download script...
Serial Port: /dev/cu.usbmodem14201
BIN FILE /var/folders/3v/62sy5_5j1b72zgmg3wrnll6c0000gn/T/arduino_build_60893/Blink.ino.bin
Waiting for device...
Waiting for device...
Device found!
exit status 74

구글링을 열심히 해보다가 뚜렷한 답이 없어서 쳐박아뒀었는데, 다시 꺼내봤다가 답을 찾았다.


결국 또 구글링이긴 한데
바이너리 업로드에 쓰이는 저 arduino101load라는 프로그램이 예전 버전은 되는데 기존 버전은 안된다는 것 같다.

결국 구글링한 페이지에 링크된 버전을 다운받아, 기존 프로그램이 있는곳에 복사해 넣어줬더니 정상 동작한다.

# arduino101load -dfu=/Users/heisice/Library/Arduino15/packages/arduino/tools/dfu-util/0.9.0-arduino1 -bin=/var/folders/3v/62sy5_5j1b72zgmg3wrnll6c0000gn/T/arduino_build_60893/Blink.ino.bin -port=/dev/cu.usbmodem14201 -v -ble_fw_str="ATP1BLE00R-1631C4439" -ble_fw_pos=169984 -rtos_fw_str="" -rtos_fw_pos=0 -core=2.0.0
arduino101load 2.0.2 - compiled with go1.7.5
Starting download script...
Serial Port: /dev/cu.usbmodem14201
BIN FILE /var/folders/3v/62sy5_5j1b72zgmg3wrnll6c0000gn/T/arduino_build_60893/Blink.ino.bin
Waiting for device...
Device found!
Verifying BLE version: ATP1BLE00R-1631C4439
BLE version: verified
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
dfu-util: Invalid DFU suffix signature
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Deducing device DFU version from functional descriptor length
Opening DFU capable USB device...
ID 8087:0aba
Run-time device DFU version 0011
Claiming USB DFU Interface...
Setting Alternate Setting #7 ...
Determining device status: state = dfuDNLOAD-IDLE, status = 0
aborting previous incomplete transfer
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0011
Device returned transfer size 2048
Copying data from PC to DFU device

Download [ ] 0% 0 bytes
Download [= ] 4% 2048 bytes
Download [== ] 8% 4096 bytes
Download [=== ] 12% 6144 bytes
Download [==== ] 16% 8192 bytes
Download [===== ] 20% 10240 bytes
Download [====== ] 24% 12288 bytes
Download [======= ] 28% 14336 bytes
Download [======== ] 32% 16384 bytes
Download [========= ] 36% 18432 bytes
Download [========== ] 40% 20480 bytes
Download [=========== ] 44% 22528 bytes
Download [============ ] 48% 24576 bytes
Download [============= ] 52% 26624 bytes
Download [============== ] 56% 28672 bytes
Download [=============== ] 60% 30720 bytes
Download [================ ] 64% 32768 bytes
Download [================= ] 68% 34816 bytes
Download [================== ] 72% 36864 bytes
Download [=================== ] 76% 38912 bytes
Download [==================== ] 80% 40960 bytes
Download [===================== ] 84% 43008 bytes
Download [====================== ] 88% 45056 bytes
Download [======================= ] 92% 47104 bytes
Download [======================== ] 96% 48732 bytes
Download [=========================] 100% 48732 bytes
Download done.
Sent a total of 48732 bytes
state(2) = dfuIDLE, status(0) = No error condition is present
Done!
dfu-util: can't detach
Resetting USB to switch back to runtime mode
SUCCESS: Sketch will execute in about 5 seconds.


해당 프로그램 바이너리는 나중에 참조를 위해 이 글에 첨부하기로 한다.

arduino101load-2.0.0-darwin-testU.zip


참조: https://forum.arduino.cc/index.php?topic=467201.msg3205748#msg3205748

+ Recent posts