Category Archives: Uncategorized

Windows HEIC HEVC Extensions

https://www.microsoft.com/ko-kr/p/hevc-video-extensions-from-device-manufacturer/9n4wgh0z6vhq?activetab=pivot:overviewtab

https://store.rg-adguard.net/

CategoryID: 5e60c346-7f52-4a6f-98c0-70fef2dd1d01

Microsoft.HEVCVideoExtension_1.0.40614.0_x64__8wekyb3d8bbwe.appx

용량은 작은데 아직은 좀 귀찮은 포맷이구만……

Samsung Galaxy change CSC by using Theme w/o Samkey

Original source : https://www.youtube.com/watch?v=Eod66-NVQj8
and https://www.mysterious-dev.com/2020/05/changecsc-all-samsung-free-tool-android.html

귀찮으니 짧고간단하게,

원본 출처에서 “Setup ChangeCSC Free Tool.exe”를 다운받으면
Themida로 이쁘게 패킹되어있는 녀석이 나오는데
얘가 하는거는 그냥 디바이스 체크, galaxy themes앱을 초기화, Qt5wightx.dll (사실 APK 파일)을 설치,  샘숭 theme sotre 실행, 끝. (아, 광고도)

그리고 아래 과정은 셀프로 진행하라 함

Qt5wightx.dll는 테마파일이며 역할은 시스템 설정의 legal  항목에 표시되는걸 바꿔주는것

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="legal_information" android:key="legal_screen"> xmlns:settings=&quot;http://schemas.android.com/apk/res/com.android.settings&quot;&gt;\10
    <PreferenceScreen android:title="Change Carrier" android:key="T" android:summary="Android 8.0">
        <intent android:targetPackage="com.samsung.sec.android.application.csc" android:action="android.intent.action.MAIN" android:targetClass="com.samsung.sec.android.application.preconfig.Preconfig"/>
    </PreferenceScreen>
    <PreferenceScreen android:title="Change Carrier" android:key="T" android:summary="Android 9.0">
        <intent android:targetPackage="com.samsung.sec.android.application.csc" android:action="android.intent.action.MAIN" android:targetClass="com.samsung.sec.android.application.preconfig.Preconfig"/>
    </PreferenceScreen>
    <PreferenceScreen android:title="Change Carrier" android:key="T" android:summary="Android 10.0">
        <intent android:targetPackage="com.samsung.android.cidmanager" android:action="android.intent.action.MAIN" android:targetClass="com.samsung.android.cidmanager.preconfig.PreconfigActivity"/>
    </PreferenceScreen>
    <PreferenceScreen android:title="HiddenMenu" android:key="T" android:summary="Service Menu">
        <intent android:targetPackage="com.sec.android.app.factorymode" android:action="android.intent.action.MAIN" android:targetClass="com.sec.android.app.factorymode.FactoryCTRL"/>
    </PreferenceScreen>
    <PreferenceScreen android:title="By Mysterious-Dev " android:key="samsung_legal" android:fragment="com.samsung.android.settings.deviceinfo.legal.Eula"/>
    <PreferenceScreen android:title="www.mysterious-dev.com " android:key="samsung_privacy_policy"/>
    <Preference android:title=" " android:key="legal_phrase_version"/>
</PreferenceScreen>

결론은 samsung.android.cidmanager 패키지의 com.samsung.android.cidmanager.preconfig.PreconfigActivity를 실행해주는건데
이걸 그냥 실행하면 com.sec.permission.preconfig 퍼미션이 없어서 실행이 되지 않음.
그래서 권한이 있는 시스템 설정앱을 테마로 변경해서 퍼미션과 함께 CSC를 수정할 수 있는 액티비티를 실행(핵심!)

성공한 기종은 Galaxy S10 5G 모델 (KT -> 자급제)

ps. 변경하게되면 리부팅되며 초기화 작업이 진행되므로 백업필수(재부팅시 부팅시간 좀 걸림)
ps2. 테마 적용시 업데이트 하기로 나오면 인터넷 끊고 진행하니까 사용해보기로 뜸
ps3. Samkey는 어떻게 하는지 궁금하네

Special thanks to Mysterious-Dev.
(많이는 못하지만 Samkey 가격만큼 도네이션좀 해주고싶은데….)

Audio(MP3) batch edit and convert with Audacity

어학공부에 있어서 반복청취는 매우 중요하다.
최근 중국어를 공부함에 있어 MP3파일마다 붙어있는 인트로가 거슬려서 이것을 없애는작업을 하였다.
MP3파일이 백개가 조금 안되는 많은량에 자동화 해놓으면 앞으로도 두고두고 쓸일이 많을거같아 자동화 하기로 하였다.

이것저것 검색해보니 평소에 간단한 음성편집기로 자주 서용하던 Audacity에서 Batch Processing을 지원하는것을 확인하여 이것을 사용하여 진행.

MP3앞부분 x초를 제거하는 간단한 방법을 고려하였는데 인트로에서 파트주제를 읽어주는 가변적인 변수가 확인되었다.

0.8초 이상 지속되는 무음을 기준으로 4번째까지 버리면 되는 것이라 이것을 ‘Silence Finder’를 통해 자동화 하였고
중간중간에 휴지기 텀이 길어 이것 역시 조금 짧게 조정할수 있도록 매크로를 작성하였다.

어차피 휴대폰 모노 스피커로 들을것이기에 모노로 바꿔 용량 절약의 기회도 꾀하였다.

‘Manage Macros’ 창에서 아래쪽 Files 버튼을 눌러서 파일들 선택해주면 자동으로 변환하고 ‘macro-output’에다가 export 해준다.

모든 과정의 결과 350Mb 6시간 7분짜리 mp3들이 225Mb 4시간 7분으로 줄어들었다. (30분 일해서 한싸이클마다 2시간 벌었다ㅋ)
다음번에 이과정이 필요한 경우에는 더 빠르게 작업이 가능할것 같다.

LG G6 Music Player 분석

최근 G6 Pro를 중고로 구매하면서 가지고있던 음원들을 싹 정리하였다.
하는김에 가사도 정리하려고 metaflac을 이용하여 LYRICS 태그를 추가하였음에도 가사가 뜨지 않아 apk를 추출하여 로직을 확인하게 되었다.

아래는 확인한 com.lge.music.MusicUtils 클래스의 getLyrics 메서드

    public static String getLyrics(Context context) {
        if (mPlayType != Defs.PLAY_TYPE_LOCAL) {
            ELog.m111d("It is not Local Type.");
            return null;
        }
        try {
            String contentPath = sService.getPath();
            String lyricsText = "";
            if (contentPath == null) {
                return lyricsText;
            }
            String filePath = getFilePath(context, contentPath);
            String lyricsTemp = null;
            if (!TextUtils.isEmpty(filePath)) {
                String mimeType = getMimeTypeFromData(context, filePath);
                ELog.m111d("mimeType : " + mimeType);
                if ("audio/flac".equals(mimeType) || "audio/vorbis".equals(mimeType) || "application/ogg".equals(mimeType)) {
                    MediaExtractor mediaExtractor = new MediaExtractor();
                    mediaExtractor.setDataSource(filePath);
                    lyricsTemp = mediaExtractor.getTrackFormat(0).getString("unsynced-lyrics");
                } else {
                    Lyrics file = new Lyrics(filePath);
                    if (file != null) {
                        lyricsTemp = file.getLyricsText();
                    }
                }
                ELog.m111d("lyricsTemp : " + lyricsTemp);
            }
            if (TextUtils.isEmpty(lyricsTemp)) {
                return "";
            }
            return lyricsTemp.replace("\n\r", StringUtil.f539LF).concat(StringUtil.f539LF);
        } catch (Exception e) {
            ELog.m114e("Exception:: " + e.toString());
            return null;
        }
    }

flac, vorbis 타입은 안드로이드의 MediaExtractor를 이용하여
lyricsTemp = mediaExtractor.getTrackFormat(0).getString(“unsynced-lyrics“); 를 실행하여 가사를 가져오는것으로 확인된다.

아래 metaflac 명령어를 이용하여 “UNSYNCEDLYRICS” 태그로 추가하니

metaflac --set-tag="UNSYNCEDLYRICS=TEST LYRICS
TEST LYRICS
TEST LYRICS
TEST LYRICS
TEST LYRICS" test.flac

 

가사가 잘 뜬다.

ps

“setprop persist.service.main.enable 1″을 하면 로그를 볼 수 있다.
삼성이나 서드파티앱에서 지원되는 LRC와 같은 싱크가사는 지원되지 않는다. ㅠ

Marshall Stanmore teardown

심심해서 열어본 스탠모어를 분석해보았다.
기본스펙은 다음과 같다.
1개의 50W 우퍼, 2개의 15W트위터 구성이다. 총 80W이다.

분해는 뒷면의 나사 9개를 제거하면 간단하게 가능하다.
뒷판을 분리하면 전원과 앰프가 같이 구성이된 PCB가 뒷판에 붙어있다.

문제는 여기서 부터 시작이다. 아무것도 안했는데 전원이 켜지질 않는다. + 어디선가 열기가 느껴지며 뭔가 굽히는 냄새가 나서 급하게 전원을 제거하였지만 이미 많이 늦은것같다.
이왕 분해하고 고장낸거 뼛속까지 파헤치기로한다.(는 수리를 위해 구글링해봤으나 자료가 거의 없다..)

정상적인 상태의 PCB의 사진을 찍지 못했다. 다행히 Badcaps 포럼에
https://www.badcaps.net/forum/showthread.php?t=66580 가 올라와있다.
두장의 사진 무단불펌(sorry for using your pictures without your permission, if you mind please let me know to delete these)

먼저 정면샷

우하단에 SMPS가 보인다. 좌하단에는 BT 모듈이 핀헤더로 땜질 되어있고 그위에는 뭔가 쉴딩이 되어있다. 가운데는 적당히 앰프를 구성하는 캐패시터와 인덕터로 보여진다.
그리고 후면

별볼일 없다 넘어가도록 한다.

BT모듈을 분리해 보았다.

각각의 핀용도가 프린팅 되어있다. 잘 보이진 않지만 CSR8645를 사용하고있다.  특이점은 APT-X를 지원한다.
모듈 아래쪽 칩 JRC4560으로 검색해보니 NJM4560이 나타난다 AMP인것으로 보인다.

쉴드를 들어뜯어내면 다음과 같은 자태가 나타난다.(검정, 흰 와이어 두개는 무시하도록한다…)

대충 그려보면…

각각의 역할은
HCF4052는 채널 선택역할
PCM1808DIR9001을 이용하여 ADC수행
TAS5508C에서 이퀄라이저 적용 및 PWM변환
TAS5342A는 PWM신호 받아 아날로그 신호 출력 및 AMP 역할 (Digital Audio PWM Processor)
모든 컨트롤은 12LE5A60S2에서 I2C통신으로 진행 (8051기반 MCU)한다.

입력~PCM1808구간까지는 아날로그
PCM1808~TAS5508구간은 I2S
TAS5508~TAS5342구간은 PWM신호로
최종적으로 TAS5342에서 아날로그 신호로 전환되며 증폭되는것으로 확인된다.

전원은 3.3v, 5v, 15v, 30v가 사용되는것으로 보여지며

여기 댓글을 보면 3.3v를 만들어주는 MC34063A가 잘 죽는것으로 보인다.

본인의 경우 전원을 인가하면 MCU에서 고열이 발생하는것으로 확인되며 MCU의 VCC와 VSS 저항이 매우 적은것을 보았을때 MCU사망으로 추정된다. (전원부 고장이길 바라며 소자 하나씩 제거해가면서 전원부는 멀쩡한것을 확인하였다;;)
덩달아 MCU가 컨트롤하는 칩들(DIR9001, TAS5508)에 리셋이 계속 걸려있는것을 확인하고 패턴을 끊었다.
최종적으로 I2S 신호가 TAS5508까지 들어가는것을 확인하였으나 TAS5508로부터 PWM신호가 나오지 않아 데이터 시트를 보던 중 Master Volume이 Reset시에 Mute로 확인하였다.

I2C통신을 통해 TAS5508를 제어가 가능하여 아두이노 나노를 이용하여 간단하게 Master Volume을 설정할 수 있도록 만들었으나 TAS5508가 이를 받아들이지 않는것으로 보인다. 풀업을 설정하는 등 여러가지를 시도해보았으나 잘되지 않아 다른 앰프를 구성하기로 하였다.

SMPS를 재활용하려고 30v를 사용하는 적당한 2.1채널 80~100w급 앰프를 찾아보았으나 적합한 제품은 발견하지 못하였다.
그나마 가격대비 맘에느는 TPA3116D2 앰프를 영입하고 적당한 SMPS를 구매하였다.

는 배송 진행중 …

결론 : 멀쩡한건 뜯지말자.
ps. 멀쩡한 상태로 분석을 한것이 아니라 정확하지 않을 수 있다.
UART 핀헤더가 나와있는데 어떤 내용이 출력되는지 궁금한데 확인할 수가 없네…ㅠ