All posts by RSR

LG HiFi module Teardown

출시할때부터 사려고 벼르고 있던 HiFi모듈을 구매하였다. (국내용 AFD-1210, 해외용 AFD-1200)
(중고로 저렴하게 팔아주신 xx분께 감사를….)

시작은 분해부터 ㅋㅋ (아니 테스트부터 해야지 ㅠㅠ)

핑크랑은 어울리지 않는거로… 어차피 내폰 아니니까

하단은 살짝 뜨는거 같기도..


분해 시작
연습과 구조파악을 위해 위쪽 뚜껑(?) 부터 뜯었다.
매우 얇은 양면테잎이 덕지덕지, 3~4귀퉁이 정도 잡아주는곳이 있다.
커버를 뜯고나면 스크류가 4개 나온다. 풀어주고 뜯어내면 쉽게 뜯긴다.

안쪽 기판은 이렇게, 역시 양면테잎으로 붙어있다.

다음은 아래쪽 모듈의 본체부분
역시 양면테잎으로 고정이 되어있다.

이중구조로 되어있다.
한번 접착제부분 뜯어내고, 앞면 스크류 두개
뒷면 스크류 두개를 풀어내면 모듈을 확인할 수 있다.
생각외로 매우 작다.
대부분의 공간을 스피커와 3.5파이 커넥터가 차지하고 있다.
스피커와 케이스는 고무(?) 재질의 점착제로 붙어있다.
커넥터들이 기판에 붙어있다.
이거 끊어지면 대략 많이 난감해지니 조심조심해서 메인PCB를 분리할 수 있다.
앞쪽은 쉴딩 되어있다.
쉴딩 아래쪽, USB C 커넥터의 오른쪽 검은물체는 마이크 수신부 인것 같다. (추정)
쉴딩을 잘 제거해주면 DAC과 AMP, ADC 가 나타난다. (중요하다 “잘” 제거해야된다)
사진상으로 굉장히 크게 보이지만 PCB 전체가 엄지손톱 크기이다. (사실 손톱보단 살짝 크다)
ES9028 DAC, ES9602C AMP, TI ADC3001이 쉴딩안에 자리잡고 있다.

얘는 몰랐는데 펌웨어 까보면서 SA9302라는걸 알게됨
Digital-Digital Converter 역할을 하고 USB인터페이스 담당하는 펌웨어가 여기 존재

조립은 분해의 역순이라 설명하지 않는다.

분해전 테스트해보지 못했던 작동을 테스트 해본다.

모듈의 윗부분에 USB C 케이블을 PC와 연결한다.
작동하지 않는다.

모듈의 아랫부분에 USB C 케이블을 PC와 연결한다.
작동하지 않는다.

위아래에 다 연결해 본다.
작동하지 않는다…..

윗부분에 연결하고 이어폰을 연결하니 아래와 같이 잡히는것을 확인할 수 있다. (이어폰을 연결해야 전원이 들어가는것 같다)

[  185.849178] usb 1-1.1.1: new high-speed USB device number 12 using xhci_hcd
[  185.966583] usb 1-1.1.1: New USB device found, idVendor=262a, idProduct=1560
[  185.966590] usb 1-1.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  185.966594] usb 1-1.1.1: Product: HM
[  185.966598] usb 1-1.1.1: Manufacturer: LG Electronics
[  185.973294] input: LG Electronics HM as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/0003:262A:1560.0005/input/input19
[  186.033982] hid-generic 0003:262A:1560.0005: input,hidraw4: USB HID v1.00 Device [LG Electronics HM] on usb-0000:00:14.0-1.1.1/input0
[  186.104193] usbcore: registered new interface driver snd-usb-audio

24/32bit 활성화를 위해서는/etc/pulse/daemon.conf를 수정하는 절차가 필요하다
https://r3dux.org/2013/12/how-to-enable-high-quality-audio-in-linux/

테스트 결과 소리 잘 나오는것을 확인하였다.
오늘은 막귀모드라 음질이 좋아진다던가 하는건 모르겠다.
10~20분 들으니 발열이 느껴진다. (조립을 잘못했나..)

이제 적당히 개조해서 USB DAC으로 쓰는일만 남았다.
(시간나면 micro USB 단자 추가하고 방열대책을 세워주고, 커패시터 좀 달아주면 좋을것 같다.)

무선 온습도계

STM8S003F3 / NRF24L01 / AM2303 / ESP8266를  이용하여 무선 온습도계를 만들었다.

전원 정보
STM8S003F3  –  2.95 V to 5.5 V operating voltage / Running 5mA, halt 70µA
NRF24L01 – 1.9 to 3.6V  / Transmit 11.3mA (max), Receive 12.3mA(max), power down 900nA
AM2303 – 3.3V to 5.5V / Dormancy 15µA, Measuring 500µA
ESP8266 – 접속프로토콜에 따라 상이, 아래의 테이블 참조

ESP8266모듈은 값을 송신받아 WiFi망을 통해 웹서버로 올리는 게이트웨이 역할을 한다.

아래는 완성품

송신기 ( STM8S003F3, NRF24L01, AM2303)
송신기는 두개를 만들어서 각각 실내, 실외를 측정할 수 있게 하였다. 5분마다 1회 측정하여 전송하며 이외의 시간은 HALT 명령어 수행.
5vto3.3v 구간을 없애기 위해 레귤레이터 제거하고 다이오드 연결, 배터리 완충시 NRF24에 걸리는 전압이 데이터시트의 MAX보다 0.3v정도 높은데 다행히 정상작동.
600mAh 배터리 사용했는데 배터리 소모가 자연방전되는 수준(2달간 0.2v 하락)
처음에 DHT11을 사용했는데 이건 오차, 편차가 심해도 너무심한수준… 그냥AM2303오는동안 연습용으로 사용함…
로직아날라이저로 값읽어오는거 만드느라 고생좀 했음….

수신기, 게이트웨이 (ESP-12e, NRF24L01, 전원보드)
송신기로부터 데이터를 수신하여 WiFi를 통해 웹서버로 전달.
얘는 전력소모가 상당한수준, 900mAh 배터리 사용하였으나 반나절 조금 더 버팀. WiFi 연결유지에 많은 전력이 소모되는듯..

디스플레이
mysql과 php로 highcharts.js 사용하여 출력

결론
뭔가 잘못했는지 몰라도 송수신거리가 5M도 안됨…(원래그런건가.. 벽하나 못뚫음, LNA는 비활성 )
STM8말고 아두이노 쓰자…. 저전력이긴한데 코드작성하기 너무힘들다.
좀 오래 두고두고 쓸려고 심혈을 기울여 작업했는데 게이트웨이쪽 배터리가 너무 빨리닳아서 ㅈㅈ…

비밀번호를 생년월일로 사용한 보안메일

몇일전 나의 메일주소로 X통신사의 이메일 청구서가 날라왔다.
내용은 보안메일이라고 사용자의 생년월일을 입력하라고 요구하였다.
수신한 메일은 나의 청구서가 아니며 비밀번호에 해당하는 생년월일도 모르는 상황이다.
잠깐 생각해보니 사람이 100년 산다고 생각하고 1년은 365일이라는걸 가정했을때 간단하게 36500의 경우의 수를 얻을 수 있었다.
또한 미성년의 경우는 제외하고 가장 가까운 날짜부터 차례로 계산한다고 하면 3만이 되지않는 경우의 수가 나온다.
직접 손으로 입력하기에는 많은데 JavaScript를 이용하여 패스워드에 해당하는 문자열을 생성하고 이를 Decrypt에 직접 대입하며 성공할때까지 수행하도록 만들 수 있다.

function toYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1;
    var y = date.getFullYear();
    return y.toString().substr(2,2) + (m<=9 ? '0' + m : m) + (d <= 9 ? '0' + d : d);
}

d= new Date();
d.setFullYear(d.getFullYear()-20);

while (1)
{
	d.setDate(d.getDate()-1);
	sd = toYMD(d);
	console.log("Current %s",sd);
	if(SecureEngine.decryptFunc(sd) != null) // 함수이름은 ^^;
	{
		console.log("Found : %s",sd);
		break;
	}
}

생각보다 빠르진 않았지만 결과는 스크립트를 실행한지 30분이 되지않아 출력되었다.

획득한 비밀번호를 이용하여 보안(?) 메일을 열어볼 수 있었다.

VVIP고객님께서 갤럭시 J5로 바꾸면서 이메일 주소를 잘못입력한것으로 확인된다.
(수신거부가 없다..)

생년월일은 절대로 비밀번호로 사용하지 않도록 해야 한다.
(근데 내가 받아보는 카드 청구서도 비밀번호는 생년월일이었다…..)

Hantek DSO5202P 구매

몇년전부터 사고싶어하던 오실로스코프를 드디어 구매하였다.
구매를 진행하다보니 해외에서 구매하게되면 생각보다 저렴하게 구매할 수 있다는점과 스펙에 대해 고려해야될 부분이 굉장히 많다는것에 대해 놀랐다.

내가 구매한 오실로스코프는 중국 Hantek사의 DSO5202P이다. (생긴게 학부시절 실습할때 사용한 텍트로닉스사의 제품과 매우 흡사하다, 심지어 컬러 아이덴티티까지…)
스펙은 200MHz 대역폭을 가지고있고 1Ch에 1Gsa/s샘플링이 가능하다. (2채널은 반으로…)
40K개의 샘플을 USB를 통해 저장할 수 있다.
알리익스프레스를 이용하여 배송비포함 250$의 가격에 e-EMS를 통하여(일요일 주문 금요일 도착) 5일만에 받아볼 수 있었다.
구매전  DSO52xxP시리즈는 동일한 부품을 사용해서 펌웨어 해킹을 통해 스펙을 업그레이드 시킬수 있다는 글을 보았지만 하위제품과 가격차이가 20$도 나지않아 그냥 상위버전을 주문하였다.
처음엔 RIGOL  DS1102E이나 OWON의 SDS7102V를 사고싶었으나 비슷한 가격에 대역폭도 좋고 영문지원도 되는 Hantek을 결정하게 되었다.
SDS7102V는 해외판이고 EDS102CV가 같은모델 내수버전인데 영문을 지원하지 않는다고 한다. 현재 해외판은 구매가 안되는것으로 확인된다.
AS는 조금 걱정되긴 하나 고장안나도록 조심조심 쓰는게 좋을것 같고 혹시라도 고장나면 EMS로 AS처리하면 될것같다.
구매할때 도움이 되었던 블로그 : http://blog.naver.com/just4u78/220880895694

주문하고 아쉬웠던점은 전면에 SAVE TO USB라는 버튼이 있는데 이 버튼은 화면 캡쳐 버튼이었다는거 … (샘플을 저장하는게 아니라 현재 스크린샷만 저장해준다)
이렇게 말이지…
샘플을 UTILITY메뉴를 통해 저장할 수 있는데 버튼을 좀 많이 눌러야된다는것…
이유는 모르겠지만 가끔 재부팅이 된다는점… (PC소프트웨어를 사용하다가 보니 재부팅이 되더라…)

USB를 이용하여 윈도우에서 사용가능한 소프트웨어를 제공한다.
OpenHantek프로젝트가 있어서 리눅스에서도 USB를 이용하여 기기를 조작하고 샘플을 수집할 수 있다고 한다. 하지만 내껀 기기 인식이 잘 안된다(PID와 VID가 조금 다른듯..)
http://cafe.naver.com/openiot/203

누군가가 프로토콜을 리버싱해서 공개를 한것으로 보인다.
PC로 바로 샘플을 땡겨올 수 있을거같은데…
http://elinux.org/Das_Oszi_Protocol
https://www.mikrocontroller.net/articles/Hantek_Protokoll#cite_note-2

https://github.com/procule/hantek-dso

내가 받은건 소프트웨어 버전이 170505이다.(홈페이지는 170318이 최신)

SAVE/RECALL 메뉴를 통해서 CSV형태로 저장할 수 있다. 저장된 데이터는 다음과같이 WaveDataXXX.csv로 저장된다.

#timebase=1345294336(ps)
,#voltbase=1000(uV)
#size=40064
5.00000E-05,-0.280
1.00000E-04,-0.280
1.50000E-04,0.040
2.00000E-04,0.280
2.50000E-04,0.160
3.00000E-04,0.360
3.50000E-04,0.360
4.00000E-04,0.280

아래는 백업용 자료들
DSO5000P_Datasheet
DSO5000P_Driver (버전은 모르겠고 윈도드라이버 서명된거)
DSO5000P_Manual (ver 1.1)
DSO5000P_Software (V2.0.0.7_20141216)
DSO5202P_Firmware (dso5kp_func_dso5202p20170318.up)

 

luks crypt partition resize

윈도우랑 리눅스랑 듀얼부팅하다가 윈도우를 전혀 안써서 지워버리기로했다. (사실 ssd 용량이 딸려서…)
백업은 필수라지만 귀찮고 귀찮고 귀찮아서 백업을 하지않고 진행(다행히도 날리진 않았다)
다음은 resize 절차이다 ( 확장할때 사용한 명령어들, 축소는 음… 글쎄…)

본인의 경우는 root directory는 luks가 적용이 되어있지 않아 그냥 부팅한 후 /home 을 umount 하여 진행하였다.

sudo gparted 로 윈도우 파티션 정리 밑 swap 축소
sudo cryptsetup luksClose crypt-vol 로 luks close 해줌
sudo parted 의 resizepart 명령어로 crypt-vol의 크기를 재지정해줌 gparted에선 아직 지원을 안하는듯..
sudo cryptsetup luksOpen crypt-vol
sudo cryptsetup resize crypt-vol
sudo e2fsck -f /dev/mapper/crypt-vol
sudo resize2fs /dev/mapper/crypt-vol

하고 mount 해주면 됨
나야뭐 다 날리면 인생 새출발할 각오로 백업을 안했는데 모든 파티션 작업에는 백업은 필수

생각보다 어렵진 않았다. live usb 이딴거 필요없었다.