2016년 1월 31일 일요일

TDA7265 앰프 마무리 작업

TDA7265 앰프의 케이스를 다시 열고 볼륨 포텐셔미터 개조 작업(B형 -> A형)을 완료하였다. 놉을 전면으로 향하게 놓은 상태에서 왼쪽부터 1(그라운드), 2(to amplifier), 3(from source)번 단자라고 하였을 때 1번과 2번에 1/10~1/5 정도 값을 갖는 저항을 연결하면 된다. 저항의 비율에 따라서 회전각에 따른 저항치 커브가 다음 그림과 같이 달라진다.

http://www.radiomuseum.org/forum/repairing_old_potentiometers.html
출처: http://www.radiomuseum.org/forum/repairing_old_potentiometers.html
나의 경우는 50Kohm 포텐셔미터에 6.8Kohm을 연결하였다. 이렇게 개조한 부품이 정말로 A형과 비슷한 행동을 보이는지 실제로 단자 1과 2 사이를 테스터기로 찍어서 놉을 돌려보면 납득이 가지 않는 저항수치가 나오는 것으로 오해하기 쉽다. 당연하다. 개조 후에는 단자 1과 3 사이의 저항은 더 이상 회전 각도에 따라서 고정되어 있지 않다. 중요한 것은 단자 1과 3 사이 저항에 대한 단자 1과 2 사이 저항의 비율이 출력 신호 레벨을 결정하는 것이다. 개조하지 않은 상태에서 단자 1과 3 사이는 항상 50Kom 고정이지만 개조 후 단자 1과 3 사이는 50Kohm(0도)로부터 놉을 돌릴수록 저항이 더욱 줄어든다. 그렇다면 소스측에서 접하는 앰프쪽의 임피던스가 놉 각도에 따라서 달라진다는 뜻인데, 이것이 음질에는 어떠한 영향을 미칠까? 새로운 궁금증이 생겨나고 있다.

작업을 마친 후의 모습이다. 매우 어설픈 하드 와이어링이다. 부품이나 기판을 고정하는 도구 없이 납땜을 한다는 것이 얼마나 어려운지 아마 경험이 있는 사람들은 잘 알 것이다. 손이 3개라면 얼마나 좋을까! 모든 작업을 마치고 정말 마지막이라는 심정으로 케이스의 뚜껑을 닫았다. 이제는 볼륨 놉의 각도에 따라서 정말 편안한 레벨 조정이 된다.


오늘 작업에서는 솔더링 페이스트의 쓸모를 알게 된 것이 큰 성과이다. 페이스트를 구입한지 정말 오랜 시간이 지났지만 그동안 사용을 하지 않았었다. 피복을 벗긴 연선에 페이스트를 바른 뒤 납을 먹이니 페이스트가 부글부글 끓으면서 점성이 낮아진 납이 순식간에 연선을 뒤덮는 것을 처음으로 보았다. 왜 진작에 페이스트를 사용하지 않았을까! 아직도 배울 것이 많은 자작 인생이다.

2016년 1월 29일 금요일

TDA7265 앰프의 케이스 작업 완료

자작의 딜레마는 '이 작업이 결코 마지막이 될 수 없다'는 것이다. 계속 불만스러운 점을 일부러라도 찾아내고서 다시 드라이버를 들고 기기 뚜껑을 여는 일이 반복된다. 이번에도 케이스의 볼트를 조이면서 아마 며칠 지나지 않아서 또 볼트를 푸는 일이 생길 것이라고 예상해 본다. 납땜은 항상 허술하고, 단자대도 꽉 조여지지 않은 것 같고...

가장 핵심이 되는 앰프 보드는 해외에서 구입하고, 케이스에 구멍을 뚫고 납땜이나 해서 서로 연결만 하는 작업을 어찌 진정한 자작이라고 부를 수 있을까? 인스턴트 라면을 끓이는 것에 비유하면 적당할지 모르겠다.

잡음 문제로 속을 썩이던 LM1876 보드와 토로이덜 트랜스(18V-0V dual)를 제거하고 새로 구입한 15V-0V-15V EI 트랜스와 TDA7265 앰프 보드를 넣었다. 토로이덜 트랜스는 TDA7265 앰프에 사용하기에는 공급 전압이 너무 높다.


내부의 전체적인 모습이다. 케이스가 매우 넉넉하다. 통기를 위한 구멍을 뚫지 못하였기에 원활한 방열을 위해서는 케이스의 부피가 큰 것이 유리할 것이다. 파워 소켓에서 트랜스로 연결되는 전선을 지나치게 길게 하였다.


트랜스의 무게 때문에 케이스 바닥판이 너무 아래로 처지는 것이 보기 싫어서 스피커 인클로저 보강용으로 쓰고 남은 스프루스 각재를 핫멜트로 붙여서 보강을 하였다. 


앰프 보드의 회로 구성은 정말 단순하다. 팝업 노이즈가 사실상 없어서 지연용 릴레이 등의 보조 회로가 없다.


적은 용량의 인두를 써서 트랜스 탭에 납땜을 하기는 쉽지 않다. 사진에는 보이지 않는 단자 뒷쪽으로는 납이 충분히 붙었으니 걱정은 하지 말자. 


트랜스 2차용 전선이 너무 가늘지는 않을까? 아마도 0.3SQ(단선으로 AWG 22 정도에 해당, 좀더 정확하게는 AWG 22 전선의 단면적은 0.330 제곱밀리미터; 참고로 랜 케이블로 널리 쓰이는 CAT5 UTP 케이블은 AWG 24로서 직경 0.511mm, 단면적은 0.205 제곱밀리미터)인 것으로 생각되는데, 허용 전류는 3A라 한다. LM1876에 연결했던 100VA 토로이달 트랜스 2차측에 쓰인 전선이 AWG 20에 해당하는데 허용 전류는 4.5A이다. 50VA 용량 트랜스 2차측(15V-0V-15V)에는 최대 몇 암페어의 전류가 흐를까? kVA를 암페어로 환산해주는 웹사이트가 있기는 하다. 그러나 2차측의 구성이 15V-0V 하나인 것과 센터탭이 있는 것(15V-0V-15V)은 다르지 않을까? 오디오파트의 웹사이트에 따르면 센터탭에는 양 말단에 흐르는 전류의 0.7배가 흐른다고 한다.

자작용으로 흔히 파는 10색 연선 묶음(아마도 0.3SQ)은 최대 수 암페어가 흐를 수 있는 전원쪽 배선에는 적합하지 않은 것 같다. 0.5SQ 전선은 주로 롤 단위로 판매할텐데... 나중에 필요해지면 차량용 DIY 제품을 취급하는 곳에서 찾아보아야 되겠다.

앰프 보드와 전원 트랜스를 바꾸면서 앰프 자체가 아니라 전원 트랜스의 용량과 적정한 전선 선택에 대한 공부를 더 많이 하게 되었다. 트랜스의 용량(와트가 아니라 VA)과 2차 측에 흐르는 전류에 대해서는 아직 제대로 이해하지 못한 상태이다. 특히 센터탭이 있는 경우는 더욱 혼동스럽다.

2016년 1월 28일 목요일

동작 중인 리눅스 서버에서 SATA HDD를 꽂고 빼는 방법

독창적인 제목은 아니지만 Hot-plugging a SATA drive under Linux라고 쓰면 이 글에 가장 잘 어울릴 것이다. 이 글이 좀더 쓸모가 있기를 바라는 마음에서 대용량 HDD의 인식과 파티션에 대한 내용도 추가하였다. 이 글을 통해서 가장 큰 혜택을 입는 사람은? 물론 작성자인 나 자신이다. 영원한 초보 리눅스 관리자의 심정으로(벌써 25년?) 글을 시작해 본다.

다음 사진은 내가 애지중지하는 서버들의 모습이다. 작은 캐비넷 안에 2대의 랙 마운트 서버가 장착되어 있고, 사진에는 나오지 않았지만 바로 곁에는 타워형 서버가 하나 더 있다.


서버의 전면부에는 손가락으로 '틱' 누르면 빠지는 hot swap bay가 있다. 서버의 전원을 켠 상태에서 SATA HDD를 hot swap bay에 넣고 인식시켜 사용한 뒤 안전하게 빼내는 방법을 오늘 상세히 알아보려는 것이다. 망가진 하드디스크를 교체하거나 백업 과정에 필수적인 기술이라 할 수 있겠다. Hot swap과 hot plug은 종종 혼용되지만 정확히 말하자면 조금 다르다. Hot swap은 컴퓨터의 전원을 내리지 않고 HDD 등의 부분품을 교체할 수 있는 기술을 말하는 것이고, hot plug은 USB 장치처럼 시스템 동작 중에 새로운 장치를 연결했을 때 바로 인식되어 사용할 수 있게 만드는 기술을 말한다.


바이오스 설정


전원을 내렸다 다시 켜지 않고는 BIOS 셋업을 건드릴 방법이 없다. 다음 두 가지가 제대로 설정되어야 한다.
  • Configure SATA as AHCI
  • Hot Plug Enabled

재부팅을 한 뒤 빈 hot swap bay에 새 HDD를 넣어보자. fdisk -l을 해 보면 새로운 하드 디스크가 보일 것이다. 내 경우에는 /dev/sdf로 잡혔다. 다음으로는 파티션, 포맷 및 마운트를 하여 정상적으로 사용하면 된다.

Misalign 문제 없이 파티션하기


GUI 환경에서 작업 중이라면 CentOS의 경우 Applications -> System Tools -> Disk Utility를 실행해 보자. 이 프로그램을 command line에서 실행하려면 palimpsest라고 치면 된다. 다음의 스크린샷은 모든 설정을 마친 뒤에 찍은 것이라서 모든 것이 정상적으로 보이지만, 새 디스크를 넣은 직후에는 This partition is misaligned by 3072 bytes라는 아주 유명한 문구가 나온다.


꽤 오래전에 내가 다른 사이트에 이 문제의 해결법을 기록해 둔 적이 있다. 요약하자면 Disk Utility를 쓰지말고 fdisk에서 단위를 실린더가 아닌 섹터로 표기하게 만든 다음(fdisk) 시작 섹터를 2048로 지정하는 것으로 해결하였었다. 그러나 fdisk 명령으로는 6TB짜리 대용량 HDD의 전체를 하나의 대형 파티션으로 잡지 못하는 것을 발견하였다. 좀 더 정확히 말하자면 fdisk는 최신 대용량 하드 디스크 드라이브에 쓰이는 GPT(GUID partition table)을 지원하지 못한다는 뜻이다. 웹 검색을 통해서 parted로 파티션을 하면 원하는 바를 이룰 수 있다는 것을 알았다. 다음의 텍스트는 내가 직접 parted를 실행한 것을 복사한 것이다. 굵은 글씨로 표시된 그대로 타이프하면 된다. /dev/sdf는 실제 상황에 맞게 바꾸어라.
[root@proton project]# parted /dev/sdf
GNU Parted 2.1
Using /dev/sdf
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel GPT                                                    
Warning: The existing disk label on /dev/sdf will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes                                                            
Warning: /dev/sdf contains GPT signatures, indicating that it has a GPT table.  However, it does not have a valid fake msdos partition table, as it should.  Perhaps it was corrupted -- possibly by a program that doesn't understand
GPT partition tables.  Or perhaps you deleted the GPT table, and are now using an msdos partition table.  Is this a GPT partition table?
Yes/No? Yes                                                            
(parted) mkpart primary 2048s 100%                                      
(parted) q                                                              
Information: You may need to update /etc/fstab.
[root@proton project]# 
6TB 디스크 전체를 하나의 파티션으로 만들었다. 이제 palimpsest disk utility로 포맷을 한 뒤 적당한 위치에 마운트한다. HDD의 사용을 마치면 시스템에서 제거할 것이므로 /etc/fstab에 기록을 할 필요는 없겠다.  parted를 사용하는 약간 다른 방법을 내가 예전에 포스팅해 둔 적이 있었다.

디스크 드라이브 안전하게 제거하기


작업이 다 끝나면 이 HDD의 전원을 안전하게 차단하고 꺼내면 된다. 다음의 순서를 따를 것.
  1. umount 실행. 어떤 글에서는 umount 전에 sync를 몇 번 실행하라고 하는데, umount를 실행하면 자동적으로 sync를 먼저 실행하므로 그럴 필요가 없다고 한다.
  2. hdparm -Y /dev/sdf
hdparm -Y 는 지정된 HDD를 셧다운시키는 명령어이다. 여기까지 한 다음 HDD를 빼면 된다. 그런데 어떤 글에서는 다음의 두 명령어 중 하나를 실행하라고 한다. 이 명령이 hdparm -Y와 같이 쓰여야 하는지, 혹은 hdparm -Y를 대신해서 쓰여도 되는지는 아직 확인하지 못하였다.
  1. echo 0 - 0 > /sys/class/scsi_host/hostX/scan
  2. echo 1 > /sys/block/sdf/device/delete
hostX와 sdf는 실제 상황에 맞게 고쳐야 한다. 내 HDD의 SCSI host 번호를 알려면 다음 명령 중 아무것이나 실행해 보라.
  1. ls -l /sys/block/ | grep sd. 
  2. ls -l /dev/disk/by-path/

하드디스크 정보 알아내기


기억하면 유용한 명령어들이다.
  • ls -l /dev/disk/by-uuid 
  • hdparm -I /dev/sdf

2016년 1월 27일 수요일

Trimmomatic의 출력 파일명 설정

일루미나 시퀀싱 데이터로부터 어댑터 서열 제거와 quality trimming을 하기 위한 도구로서 현재까지 가장 유용한 도구는 trimmomatic이 아닐까 한다. 특히 멀티쓰레딩 작업이 가능하고 paired file을 매우 유용하게 다루어준다는 것이 장점이다. 출력파일 이름에 .gz 또는 bz2 등의 확장자를 지정하면 알아서 압축도 해 준다.

Trimmomatic V0.32 manual

Single end(SE) mode에서는 출력 파일(단 하나)의 이름을 명령행에서 인수로 지정하면 된다. 그러나 pair end(PE) mode에서는 양상이 조금 복잡하다. 위 링크에 소개된 매뉴얼 파일을 보고 이를 쉽게 정리해 보고자 한다.  우선 기억할 것은 PE mode로 실행하려면 2개의 파일을 반드시 공급해야만 한다. 즉 interleaved file은 안된다는 것이다.

2개의 입력 파일을 명시적으로 지정하는 것 외에 -basein flag을 써도 된다. 그저 -basein FirstFile이라고만 하면 파일명에 공통적으로 존재하는 패턴을 찾아서 두번째 파일을 알아서 결정한다. FirstFile_R1_001.fq.gz, FirstFIle.f.fastq, FirstFile.1.sequence.txt 등 어떤 형태든지 알아서 패턴을 파악하여 해결한다.

출력 파일은 어떠할까? 한 쌍의 입력 파일에 대해서 paired forward, unpaired forward, paired reverse, 그리고 unpaired reverse의 총 4개 출력 파일이 만들어진다. 명령행에서 인수의 형태로 4개의 파일 이름을 명시적으로 지정해도 되고, 입력 파일과 마찬가지로 -baseout flag을 써도 된다. 만약 -baseout mySamplesFiltered.fq.gz라고 했다면 다음의 4개 파일이 만들어진다. 길게 설명을 달지 않아도 각각이 무엇을 의미하는지는 쉽게 파악할 수 있다.

  • mySamplesFiltered_1P.fq.gz
  • mySamplesFiltered_1U.fq.gz
  • mySamplesFiltered_2P.fq.gz
  • mySamplesFiltered_2U.fq.gz
최근 두어달 동안 paired file을 다루는 분석을 워낙 많이 하다보니 이를 interleaved file로 바꾸는 일을 밥먹듯이 하였다. Interleaved file을 만드는 유틸리티는 인터넷에서 조금만 검색하면 쉽게 찾을 수 있다. Velvet 패키지에 포함된 shuffleSequences_fast* 부류의 스크립트를 써도 되고, khmer 패키지의 interleave-reads.py 파이썬 스크립트를 써도 된다. 혹은 sga preprocess --pe-mode=1 (-p 1)을 이용하면 interleaved file을 만드는 동시에 추가적인 트리밍 작업이 가능하다. 
sga preprocess --pe-mode=1 --permute-ambiguous -q 35 -f 25 -m 40 -o preprocessed.fq File_1.fq File_2.fq

반갑지 않은 사은품

초등학생이던 70년대에는 아버지께서 매월 사다주시는 월간지 <어깨동무>를 읽는 것이 큰 즐거움이었다. 어린이 눈높이에 맞춘 재미난 기사와 만화도 재미있었지만, 이번달에는 어떤 '별책부록'이 딸려오는지에 대해 더 관심이 많았다. 지금 생각하면 간단한 완구나 과학교재 수준의 물건들이 될 것이다. 학교앞 문구점에서 팔던 장난감에 비해서는 조금 더 질이 좋았던 것으로 생각한다. 결국은 이러한 별책부록이 잡지의 판매부수를 올리는 효자 노릇을 했을 것이다. 인터넷 시대가 되면서 단행본과 잡지 시장은 매우 어렵다. 한때 여성지는 매년 말에 가계부를 끼우주는 것이 관례였는데 요즘은 아마 그렇지 않을 것이다.

요즘 커피 소비가 부쩍 늘면서 달달한 믹스형 인스턴트 커피 말고도 다양한 취향의 커피 제품이 많이 판매되고 있다. 마트에 가면 이번달에는 어떤 커피를 살 것인지를 고민하게 된다. 제품명보다는 모델의 이름과 얼굴로 기억하는 경우가 더 많다. 몇 개월 전에 구입한 네슬레의 '수지' 커피는 내 취향에 잘 맞지 않았다... 뭐 이런 식이다. 이번에는 '김태희'로 할 것인가, 혹은 '김연아'로 할 것인가?

대용량 포장의 커피에는 사은품이 종종 붙어있다. 한동안은 텀블러가 많았다. 몇 번의 구매를 거치면서 집과 사무실에는 쓰지않는 텀블러가 점점 늘어나게 되었다. 일회용 컵의 사용을 줄이고자 텀블러를 주는 것은 좋은 취지이기는 한데, 커피를 살 때마다 텀블러가 하나씩 늘어나니 오히려 처치 곤란의 상태가 되었다. 이걸 다 어떻게 하란 말인가. 일회용품을 대신하고자 만든 물건이 오히려 쓰레기 신세가 되고 말았다. 지난주에는 색다른 사은품이 있는 커피를 구입하게 되었다. 건전지로 작동하는 거품기가 들어있는 카페라테 기구였다. 제작 단가가 몇천원은 될 터인데, 한 상자에 2만원도 안하는 커피에 어떻게 이런 물건을 끼워주는 것이 가능할까? 그만큼 커피값 자체에 거품이 많다는 뜻일까?

사은품을 원치 않는 소비자도 분명히 있을 것이다. 그러면 사은품만 쏙 뺀 상품을 구입하면 될까? 그러면 소비자는 사은품 값어치만큼의 손해를 본다고 생각하게 될 것이다. 그러니 울며 겨자먹기로 사은품이 끼워진 상품을 사지 않을 수 없다(마트에는 사은품이 없는 대용량 제품은 눈에 띄지 않았었다). 이건 뭔가 잘못되었다. 차라리 일정 기간 동안에만 사은품을 주는 것이 옳다. 이렇게 항상 사은품을 줄 것이라면, 사은품 없이 가격을 내리는 것이 바람직하다. 어쩌면 마트의 시식 행사도 마찬가지로 보이지 않는 비용을 발생하고 있을 것이고, 모르는 사이에 제품의 가격에 반영되고 있을 것이다.

규모의 경제가 언제까지 유효할까? 흔적을 적게 남기는 현명한 소비가 자리잡기를 바란다면 너무 고지식한 것일까?

2016년 1월 26일 화요일

기어코 15-0-15V 트랜스를 구입하다

TDA7265 보드에 18-0-18V 트랜스를 연결하는 것은 약간 부적합하다는 결론에 따라 어떻게 하면 추가 비용을 들이지 않고 트랜스의 2차 전압을 15-0-15V로 내릴 수 있을지 고민을 해 보았다. 웹 검색을 해 보니 커패시터를 이용하여 교류를 위한 전압 분할 회로를 꾸미는 것이 가능하고, 저항을 이용한 회로와는 달리 전압과 전류의 상(phase)이 달라져서 열로 발산되는 전력 소모가 극히 적다는 사실을 알게 되었다. 이를 capacitive voltage divider라고 부른다. 어쩌면 이것이 비용을 가장 적게 들이는 개조 방법이 될 지도 모르겠다.

그러나 볼일이 있어 서울에 갔다가 장사동을 들렀던 내 손에는 이미 15-0-15V 50VA EI 코어 트랜스가 들려있었다! 이를 집에 가지고 와서 급하게 TDA7265 앰프 보드에 연결해 보았다. 이제 발열도 그다지 높지 않고 볼륨 놉 조정도 편안하다. 토로이덜 트랜스에 비해서 훨씬 크고 무겁다는 것이 단점이기는 하다. 방닥에 상처를 입힐까 걱정이 되어서 종이봉투로 신발을 만들여 신겨 놓았다. 음질 면에서는 토로이덜 트랜스와 그다지 다를 바가 없다. 물론 가격은 더 저렴하다.


원래 220V를 이토록 허술하게 결선하면 안된다. 대단히 위험한 방식이다! 단지 테스트를 위한 임시적인 연결이었다.


토로이덜 트랜스에 비해 크지만 기존의 케이스에는 다행스럽게도 수납이 될 수준이다. 하지만 너무 무거워서 플라스틱제 케이스의 바닥이 축 처진다. 스피커 인클로저 보강을 위해 쓰고 남은 스프루스 각재를 써서 바닥 보강을 할 것인가? 자작의 길은 끝이 없다.

2016년 1월 24일 일요일

5 달러짜리 칩앰프에 40 달러짜리 프리앰프

에이미 와인하우스의 You sent me flying이 스피커로 흘러나오고 있다. 화요비 노래만 주야장천 듣다가('주구장창'은 잘못된 표현임) 에이미 와인하우스와 노라 존스에 뒤늦게 빠졌다. 최근에 본 다큐멘터리 영화 의 영향이랄까.


왼쪽의 파워앰프(TDA7297)는 $4.49에 지나지 않는데 오른쪽의 헤드폰앰프 겸 프리앰프(12AU7)은 $39.99나 되어서 과분하다. 원래 헤드폰앰프라서 게인이 20dB나 된다. 파워앰프에 소스(PC 사운드카드)를 직결해도 입력레벨 측면에서는 큰 지장은 없으나, 프리앰프가 중간에 삽임됨으로 인하여 좀 더 탄탄한 소리가 난다. 아니, 그저 느낌인가?

국외에서 팔리는 많은 초저가형 파워앰프(보드)는 입력단에 덜렁 볼륨 폿이 달려있는 경우가 많다. 그런데 무신호 상태에서 볼륨 놉이 중간 위치에 있을 경우 험이 가장 심하게 들린다. 이 현상에 대한 속시원한 이론적 설명은 아직 찾지 못하였다. 그래서 파워앰프의 볼륨을 최대로 해 놓고 가격대비 성능이 좋은 프리앰프를 연결하여 음량 조절을 하는 것이 가장 바람직하다는 생각을 갖고 있다. 그러나 자칫 잘못하면 파워앰프보다 프리앰프의 가격이 더 높다는 것이 함정이다.

나의 경험으로는 TDA7297 앰프의 만족도가 매우 높았다. 이보다 수준이 높은 게인클론이 하나 정도는 있어야 한다고 생각하여 LM1876 보드를 구입했으나 CD 플레이어와의 미묘한 궁합 문제로 아예 퇴출되고 그 자리는 TDA7265 앰프가 차지하였다. 데이터시트에 의하면 이 칩은 4옴 스피커를 울리기에 18V 트랜스로는 전원전압이 높은 것은 사실이지만 음량을 적절히 조절하는 것으로 대충 버텨나가기로 하였다. 15볼트 출력의 트랜스를 구입하여 TDA7265에 전용으로 연결할 생각을 아주 잠시 했었지만 곧 그 생각을 접었다.

계속 새로운 부품을 구해다가 덧방을 해 나가는 미련함을 이제는 떨칠 때가 되었다. 있는 것을 만족하기!