블로그 이미지
훅크선장

카테고리

분류 전체보기 (355)
사진이야기 (23)
펭귄컴퓨팅 (117)
컴퓨터보안 (81)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total857,370
Today2
Yesterday56

달력

« » 2023.6
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

공지사항

태그목록

이전에 리모콘만으로 설정 가능한 LED 벽시계의 리모콘 분실로 인하여, 아두이노를 가지고 IR 리모콘을 만들어보는 별 쓸모없는 작업을 해보았다. 그런데, 가지고 있는 잡동사니 보드 중에 예전 DEFCON 컨퍼런스를 갔을때, Sparkfun 워크숍을 참가해서 받아온 Roshamglo Badge Kit을 발견했다. Roshamglo 배지 키트는 IR 송신부와 수신부, 그리고 5축 스위치를 가졌기에, 간단한 IR 리모콘으로 만들기에 최적인 보드라고 생각한 것이 실수였다!!!

 

일단 Roshamglo 배지 키트는 2017년에 만들어졌고, 일종의 재미로 만든 보드이다보니, 이젠 더이상 아두이노 IDE 상에서 소프트웨어 라이브러리 지원이 안된다. (아두이노 IDE 소프트웨어를  1.6.10~1.8.x 버전대를 사용하더라도, 보드에 대한 기본적인 소프트웨어 지원 패키지가 없기 때문에, 아두이노 IDE에서 도저히 보드를 연결할 수가 없다.)

 

여기서 포기하면, 하드웨어쟁이가 될 수 없다.

그래서, Roshamglo의 기본이 되는 ATtiny84 MCU를 기준으로 아두이노 ISP를 사용하여 프로그래밍을 시도하였다.

 

Roshamglo Badge Kit 에 대한 정보는 아래의 링크들에서...

https://learn.sparkfun.com/tutorials/roshamglo-hookup-guide/all

 

Roshamglo Hookup Guide - SparkFun Learn

Introduction <!--- ###Attributes Before you begin, make sure you have filled out all required fields found under the Attributes tab. The author is responsible for for the following: * **Title** - Pick a title that makes sense for Search Engine Optimization

learn.sparkfun.com

https://learn.sparkfun.com/tutorials/hack-your-roshamglo-badge/all

 

Hack Your Roshamglo Badge - SparkFun Learn

Introduction So you've put together your Roshamglo badge, and now you want more? Well, we can help you with that. In addition to playing infrared (IR) Rock-Paper-Scissors, the Roshamglo board can be reprogrammed with user-created code. This will allow you

learn.sparkfun.com

https://learn.sparkfun.com/tutorials/roshamglo-project-tv-b-gone/introduction

 

Roshamglo Project: TV-B-Gone - SparkFun Learn

Retired KIT-14130 The SparkFun Roshamglo is the new and fun way to play Rock-Paper-Scissors with your friends! The board uses the ATtiny84, and…

learn.sparkfun.com

 

ATtiny84  프로그래밍에 대한 정보는 다음 링크들에서...

https://github.com/SpenceKonde/ATTinyCore

 

GitHub - SpenceKonde/ATTinyCore: Arduino core for ATtiny 1634, 828, x313, x4, x41, x5, x61, x7 and x8

Arduino core for ATtiny 1634, 828, x313, x4, x41, x5, x61, x7 and x8 - GitHub - SpenceKonde/ATTinyCore: Arduino core for ATtiny 1634, 828, x313, x4, x41, x5, x61, x7 and x8

github.com

https://www.instructables.com/Arduino-Uno-to-Program-ATTINY84-Arduino-V-185/

 

Arduino Uno to Program ATTINY84 (Arduino V. 1.8.5)

Arduino Uno to Program ATTINY84 (Arduino V. 1.8.5): Using the Arduino Uno to program ATTINY84-20PU (Digikey item # ATTINY84-20-PU-ND). This Instructable shows how to use the Arduino platform to work with physically smaller processors, such as the ATtiny84

www.instructables.com

https://www.instructables.com/Program-an-ATtiny44458485-with-Arduino/

 

Program an ATtiny44/45/84/85 With Arduino

Program an ATtiny44/45/84/85 With Arduino: This tutorial gives provides the steps to set up, program, and test an ATtiny44/45/84/85 with an Arduino. It is also provides some explanations as to the inner workings of AVR chips in general.

www.instructables.com

https://www.hackster.io/350166/getting-started-with-attiny84-c920ee

 

Getting started with Attiny84

learn how to program Attiny84 with this custom Breakout board with ams1117 for basic level projects like blinking LED and stuff. By Arnov Sharma and JLCPCB.

www.hackster.io

---------------------------------------------------------------------------------------------------------------------

ATtiny84 MCU 프로그래밍 순서

 

0. ATtinyCore 보드 지원 라이브러리 설치 

Preferences... 에서 Additional boards manager URLs : 에  http://drazzy.com/package_drazzy.com_index.json를 추가해주고, Boards Manager에 가서  ATTinyCore by Spence Konde 를 설치해준다.

(이 글을 쓰는 시점에서 Arduino IDE 2.0.4에서 ATTinyCore version 1.5.2 가 설치되어 잘 동작한다.)

1. Arduino Uno를  Arduino ISP로 만든다. (File -> Examples -> 11. ArduinoISP -> ArduinoISP 선택하고, 스케치 업로드)

2. Arduino Uno와 ATtiny84(Roshamglo Badge Kit)와 연결 

    Arduino Uno의 RESET 핀과 GND 핀 사이에 10uF 커패시터를 연결 (커패시터의 짧은 다리가 GND 쪽에)

 

    Arduino Uno 핀 번호                                         Roshamglo 핀 번호 

                3.3V                <----------------->          3.3V

                GND                <----------------->          GND

                  13                  <----------------->           4 (SCK)

                  12                  <----------------->           5 (MISO)

                  11                  <----------------->            6 (MOSI)

                  10                  <----------------->            RESET

 

3. Roshamglo 에 동작시킬, ino 아두이노 프로그램 작성 

Blink 예제는 다음과 같다.

// Blinking Example

int GREEN_LED = 7; // Green LED가 연결된 핀 7번
int RED_LED = 8; // RED LED가 연결된 핀 8번

void setup(){
pinMode(GREEN_LED, OUTPUT); // Green LED를 출력으로 설정합니다.
pinMode(RED_LED, OUTPUT); // RED LED를 출력으로 설정합니다.
}
 
void loop(){
digitalWrite(GREEN_LED, HIGH); // Green LED 켜기
digitalWrite(RED_LED, LOW); // RED LED 끄기
 
delay(1000); // 1초간 유지합니다.
 
digitalWrite(GREEN_LED, LOW); // Green LED 끄기
digitalWrite(RED_LED, HIGH); // RED LED 켜기
delay(1000); // 1초간 유지합니다.
}
 
4.  Tools -> Board 설정에서  ATtinyCore -> ATtiny24/44/84(a) (No Bootloader) 선택 
                     Port는 Arduino Uno 가 연결된 포트를 지정 (/dev/cu.usbmodemXXXXXX 로 표시됨)
                     나머지 칩 설정은 기본을 그대로 둔다. 다만, Clock Source 가 8MHz (Internal) 인것을 반드시 확인한다.
      Programmer 설정에서 “Arduino as ISP”  반드시 지정 
 
5. Tools -> Burn Bootloader 선택 실행 후,
6. Sketch -> Upload using Programmer 로 프로그램을 업로드한다.
 
에러가 없이 다 정상적으로 수행되었다면, Okay~~!!  

  

Posted by 훅크선장
, | 댓글 0

댓글을 달아 주세요

리모콘을 잃어버린 중국제 LED 벽시계의 시간설정을 위해서, 

아두이노 우노와 만능 멤브레인 키패드 3x4, 그리고 IR 송수신 모듈을 가지고  시계용 IR 리모콘을 한번 만들어 보았다.

 

제일 어려운 것이 리모콘의 송신 신호를 알아내는 것이었다. 리모콘이 있다면, 신호를 송신해보고 그 신호를 복제하는 방법으로 하면 쉽게 갈 수 있지만, 리모콘이 없으므로 모든 코드 신호를 다 보내보면서 시계쪽의 변화를 봐야했기에 완전 쌩노가다였다.

 

무아스 퓨어 39cm 슬림형 LED 벽시계
리모콘 키
1) 전원버튼  
0x1C :  LED 전원 On/Off
2) 화면전환, 디스플레이모드 설정(시간, 날짜, 온도)
0x40 :  시간 -> 날짜  -> 온도 
 x1 x1  -> 22 oC
3) 자동밝기 모드 on/off  
0x08 : 자동밝기모드  
L-01 (자동밝기모드 Off)  -> L-AU (자동밝기모드 On)
0x08, sRepeates 20 : 시간구분점 페이드인 아웃 설정정
 Fd --  -> Fd 0n
4) 알람 ON/OFF
0x44 : AL -- (알람 Off)  ->  AL On  (알람 On)
5) 길게 눌러 시간설정  
0x5E, sRepeates 20 : 
6) 알람시간 확인, 길게 눌러 알람시간 설정
0x4A   6:30
7) 수동밝기모드에서 밝기 올림, 설정모드에서 숫자 올림  
0x18 : up
8) 수동밝기모드에서 밝기 내림, 설정모드웨서 숫자 내림
0x52 : down 

 

아두이노 IDE에 keypad 라이브러리와 IRremote 라이브러리를 설치해서 아래 코드를 아두이노 우노에 업로드하면 된다.

물론 키패드와 송수신 모듈을 아두이노와 연결해야 되는데, 연결방법은 인터넷에 다 있다. (검색하면 된다.)

 

참조 사이트:

https://www.makerguides.com/ir-receiver-remote-arduino-tutorial/

 

IR Remote and Receiver with Arduino Tutorial (4 Examples)

Learn how to use an infrared (IR) sensor/receiver and remote with the Arduino. Wiring diagrams and many example codes included!

www.makerguides.com

https://github.com/Arduino-IRremote/Arduino-IRremote#sending-ir-codes

 

GitHub - Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive infrared signals with multiple

Infrared remote library for Arduino: send and receive infrared signals with multiple protocols - GitHub - Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive in...

github.com

https://mechatrofice.com/arduino/keypad-interfacing-with-arduino

 

Keypad Interfacing with Arduino 4x4, 4x3 with LCD connection and code

A Matrix Keypad is a very useful module for embedded systems and a variety of projects. This tutorial briefly explains the interface of 4×3 and 4×4 keypads with Arduino and few programs using keypad...

mechatrofice.com

https://lastminuteengineers.com/arduino-keypad-tutorial/

 

In-Depth: Interface 4x3 & 4x4 Membrane Keypad with Arduino

Learn about 4x3 & 4x4 Membrane Keypad along with its Working, Pinout, Wiring, Library, Arduino Code for Reading Key Presses.

lastminuteengineers.com

keypad 라이브러리에는 한번 누름만 존재하고, 길게 누름에 대한 함수가 존재하지 않기 때문에,

그냥 길게 누름의 신호를 별도의 키 하나에 할당해서 간단하게 구현하였다.

LED 벽시계의 키는 8개뿐이지만, 길게 누름이 3개 할당되어 있어서, 키를 11개만 쓰면 되기 때문에.

// Code for IR controller of Mooas LCD Digital Wall Clock
// coded by HooK7346
// 2023. 3. 8.
/*
* Key # : LED On/Off
* Key * : Change Display
* Key 1 : Brightness Auto On/Off
* Key 2 : Time dot Fade In/Out setting
* Key 3 : Alarm On/Off
* Key 4 : Settings Menu
* Key 5 : OK, Next
* Key 7 : Alarm Time Check
* Key 8 : Alarm Setting
* Key 6 : Up
* Key 9 : Down
*/

#include <Arduino.h>
#define DISABLE_CODE_FOR_RECEIVER // Saves 450 bytes program memory and 269 bytes RAM if receiving functions are not used.
//#define SEND_PWM_BY_TIMER // Disable carrier PWM generation in software and use (restricted) hardware PWM.
//#define USE_NO_SEND_PWM // Use no carrier PWM, just simulate an active low receiver signal. Overrides SEND_PWM_BY_TIMER definition
#include "PinDefinitionsAndMore.h" // Define macros for input and output pin etc.
#include <IRremote.hpp>
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8};

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

uint8_t sCmd_LED_On_Off = 0x1C;
uint8_t sCmd_Change_Display = 0x40;
uint8_t sCmd_Bright_Auto_On_Off = 0x08;
uint8_t sCmd_Alarm_On_Off = 0x44;
uint8_t sCmd_Setting = 0x5E;
uint8_t sCmd_Alarm_Setting = 0x4A;
uint8_t sCmd_Up = 0x18;
uint8_t sCmd_Down = 0x52;

uint8_t sRepeats_short = 0;
uint8_t sRepeats_long = 30;

void setup() {
pinMode(LED_BUILTIN, OUTPUT);

Serial.begin(115200);
 
IrSender.begin(DISABLE_LED_FEEDBACK); // Start with IR_SEND_PIN as send pin and disable feedback LED at default feedback LED pin

Serial.print(F("Send IR signals at pin "));
Serial.println(IR_SEND_PIN);
}

void loop() {
char key = keypad.getKey();
switch (key) {
case '#':
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_LED_On_Off, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_short);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_LED_On_Off, sRepeats_short);

break;
case '*': // Change Display button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Change_Display, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_short);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Change_Display, sRepeats_short);

break;
case '1': // Brightness Auto On/Off button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Bright_Auto_On_Off, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_short);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Bright_Auto_On_Off, sRepeats_short);

break;
case '2': // Time dot Fade In/Out setting button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Bright_Auto_On_Off, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_long);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Bright_Auto_On_Off, sRepeats_long);

break;
case '3': // Alarm On/Off button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Alarm_On_Off, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_short);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Alarm_On_Off, sRepeats_short);

break;
case '4': // Settings Menu button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Setting, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_long);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Setting, sRepeats_long);

break;
case '5': // OK, Next button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Setting, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_short);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Setting, sRepeats_short);

break;
case '7': // Alarm Time Check button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Alarm_Setting, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_short);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Alarm_Setting, sRepeats_short);

break;
case '8': // Alarm Settings button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Alarm_Setting, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_long);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Alarm_Setting, sRepeats_long);

break;
case '6': // Up button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Up, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_short);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Up, sRepeats_short);

break;
case '9': // Down button
/*
* Print current send values
*/
//Serial.println();
Serial.print(F("Send now: address=0x00, command=0x"));
Serial.print(sCmd_Down, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats_short);
Serial.println();

//Serial.println(F("Send standard NEC with 8 bit address"));
Serial.flush();

IrSender.sendNEC(0x00, sCmd_Down, sRepeats_short);

break;
}
}
Posted by 훅크선장
, | 댓글 0

댓글을 달아 주세요

집에 있는 TV의 인치 크기를 키워보려는 욕망을 참지 못해서, 결국 2018년 생산 미국판 LG TV 중고를 하나 구하게 되었고,

그 TV는 55SK8000PUA 모델이다.

 

인터넷을 뒤져본 결과, LG 전자의 의도적인 방해작전? 인지 모르겠으나 리모콘 등을 이용하여, 해외 직구 TV의 로컬 변경(한국 지역 설정)이 불가능한 것을 확인하고, 직접 TV의 보드상에 있는 EEPROM의 내용을 수정하여 한국판으로 변경하는 작업을 시작하였다.

 

아래는 리모콘이나 IR센서 스마트폰, 또는 웹브라우저를 이용한 로컬변경 방법이 쓰여진 블로그이다.

https://goodgogo.tistory.com/3820

 

스마트폰으로 LG 해외직구 TV 로컬변경 하기

오늘 유튜브 알고리즘에 뜬금 없이 LG 해외직구 TV 로컬변경을 해봤다 라는 영상이 뜨길래 봤어요 궁굼했던 부분이기도 한데? 지상파를 안보는 저로썬 구지 해야 하나 싶어서 4~5년 정도 안하고도

goodgogo.tistory.com

그러나, 2018년 이후에 생산된 LG TV는 위의 모든 방식으로는 불가능하고, 오직 TV의 메인보드를 열어서 그 안의 EEPROM 내용을 바꾸는 방법만으로 가능한 것으로 확인하였다.

 

그전에 해외 직구 TV에서 흔히 일어난다는, 케이블 접힘에 의한 네트워크 모듈의 오동작 부분을 다음의 블로그를 참고해서 해결하였다.

https://designusefulthings.tistory.com/40

 

LG TV 와이파이(무선 네트워크) 고장 해결 방법! (ft. 해외직구)

안녕하세요. D.U.T 입니다. 방문해주셔서 감사합니다. 이번 포스팅은 LG TV 와이파이(무선 네트워크) 고장 해결 방법입니다. ( How to resolve the LG TV Wi-Fi (Wireless Network) fault ) LG TV 와이파이(무선 네트워

designusefulthings.tistory.com

https://blog.naver.com/tales44/221986766654

 

LG SMART TV 직구 수리 :: 리모컨 인식 불량 , wifi (무선) 안잡힘, 유선 지속적 끊김 등

어느날, 우리집 TV가 작동이 잘 안되기 시작했다. TV는 직구로 샀으며 LG SMART TV 65SJ850...

blog.naver.com

메인보드와 연결된 접힌 케이블을 펼쳐놓은 상태
메인보드와 연결된 접힌 케이블을 펼쳐놓은 상태
네트워크 모듈 쪽의 접혀진 케이블을 펼쳐놓은 상태
네트워크 모듈 쪽의 접혀진 케이블을 펼쳐놓은 상태
네트워크 모듈 쪽의 접혀진 케이블을 펼쳐놓은 상태

========================================================================================

 

LG TV에서 어떤 과정을 거쳐, EEPROM의 내용을 수정할 수 있는지에 대한 정보는 다음의 블로그들에 매우 상세하게 적혀 있어서, 그 내용을 미리 잘 보고 학습해서, 머리 속에 넣었다.

https://gentlw.tistory.com/318

 

해외직구 TV 로컬변경할 때 팁

65sk8000pua를 18년에 해외직구하여 잘 사용하고 있었습니다. 최근에 로컬변경을 그냥 한번 시도해 보았는데요. 다행히 성공은 하였습니다만 서툴다보니 중간중간 막히는 부분이 있어서 시간이 한

gentlw.tistory.com

https://m.blog.naver.com/jibean77/222451272407

 

해외 직구 LG TV 로컬변경 및 DVR ON -19년 모델

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 댓글로 의견 주시는 내용중 필...

blog.naver.com

https://blog.naver.com/devilra0/222223150496

 

해외 직구 TV 로컬 변경 및 DVR ON - 75인치 LG NanoCell TV 2020, 롬라이터 사용 방법

#해외 #직구 #LG #TV #로컬 #변경 #DVR #ON #롬라이터 #LG #75NANO90UNA #Alexa #Buil...

blog.naver.com

 

========================================================================================

 

실제로 55SK8000PUA의 EEPROM 내용을 수정할 때는 아래의 블로그 내용을 참고하였다.

https://dprime.kr/g2/bbs/board.php?bo_table=tvmonitor&wr_id=28114 

 

55SK8000PUA 로컬변경 성공 후기! (DVR-ON?) - DVDPrime

안녕하세요 DVD-PRIME 여러분! 3월에 55SK8000PUA를 구입하고 4월부터 로컬변경 소식에 눈팅만하다 결국 실행에 옮기게 됬어요! TV분해나 롬에디터와 같은 걸 하나도 몰랐었구요. 그래도 컴퓨터 분해

dprime.kr

이것으로 미국판 TV를 온전히 한국판으로 만들 수 있었다.

 

요약:

1. LG TV의 뒤 뚜껑을 다 열고, 메인보드의 방열판을 제거하면, EEPROM이 있다.

2. 해당 EEPROM을 CH341A 롬라이터 장치에 테스트 클립 소켓 어댑터로 연결한다.

3. 프로그래머 소프트웨어를 가지고, EEPROM의 내용을 읽어 온 다음,

4. 00001C50 행의 08 09 열의 값을 0A 57 에서 80 46 으로 변경한다. (지역을 미국에서 한국으로 변경)

5. 그리고, 000004F0 행의 04 열의 값을 02에서 42 로 변경한다. (DVR 기능 활성화)

6. 다시 TV를 조립하고, 초기화를 해주면 완료~!

 

LG TV의 뒤 뚜껑을 제거한 모습
방열판이 존재하는 메인보드의 모습
메인보드 뒤편에 존재하는 4개의 방열판 고정핀
매우 큰 번쩍이는 방열판을 떼어내려면, 검정색의 칩 방열판과 연결되어 있는 실리콘재질의 회색 접착물질을 적절히 제거해야만 한다.
방열판이 제거된 메인보드의 전체 모습
4G25&nbsp; 82555 라고 적힌, EEPROM 칩
CH341A 롬라이터, 집게 형태의 SOP8 to DIP8 테스트 클립/소켓 어댑터를 연결해서 사용한다.
컴퓨터에 드라이버가 설치되어 제대로 인식된 CH341A 롬라이터
CH341A Programmer를 실행하고, 24 EEPROM에서 24C256 을 설정하 다음 &ldquo;읽기&rdquo; 아이콘을 눌러서, 데이터를 읽어온 상태
00001C50 행으로 가서, 08 09 열에 있는 0A 57 이라는 미국 지역 설정 값을 확인
0A 57 로 되어 있는 값을 80 46으로 변경하여, 한국 지역으로 설정
000004F0 행의 04 05 06 열에서 02 E3 04 로 되어있는 DVR 기능 비활성 상태를 확인
02 로 있던 값을 42 로 바꾸어, DVR 기능을 활성화하도록 설정
방열판을 다시 조립한 메인보드, 써멀구리스를 발라서 부착하는 것이 좋다.
TV의 초기화를 진행하고, 메뉴의 지역 설정에서 LG 서비스 국가가 &ldquo;대한민국&rdquo;으로 잘 되는 것을 확인~!

Posted by 훅크선장
, | 댓글 0

댓글을 달아 주세요

아파트 방들 사이에 사각지대가 있는데, 유선을 근처에서 끌어올 수 없는 상황이라서 Mesh 무선네트워크를 구축해보았는데,

기존의 유선 연결된 Dumb AP의 배치보다는 더 유연하게 전기만 끌어올 수 있으면 Mesh AP를 놓을 수 있어서 확실히 사각지대를 없애는 데는 좋은 방법 같다. 

그리고, 802.11r Fast Transition 까지 사용하면, 이동하면서 무선랜의 끊김 현상이 줄어들어서, 신기술 체험을 아주 잘 해보았다~!

 

첫번째 AP에서 할 일

1. wpad 패키지를 먼저 제거
기본 설치된 것은 wpad-basic-wolfssl

2. 새로운 wpad 패키지 설치
opkg update 한 다음에, wpad-mesh-openssl을 설치 한다.
그리고 바로 재부팅 한다. 반드시 재부팅

3. Network의 Wireless 로 이동하고, 
2.4G 밴드 또는 5G 밴드의 radio0/radio1 에서 Add 합니다.
(밴드 특성에 따른 선택, 예제에서는 2.4G를 선택함. 5G 대역은 무선랜 용으로만 사용)

Device Configuration 에서 채널을 선택하고,
아래도 내려와, Interface Configuration의 General Setup 에서
Mode :  802.11s
Mesh Id : my-mesh   적당한 것을 새로 작명
Network : lan  선택    mesh가 lan 영역에 연결된다.  mesh는 VLAN과 함께 쓸 수 없다.

Wireless security 에서 WPA3-SAE 를 선택하고, 비밀키를 선정하여 입력


두번째 AP에서 할 일
onemarc github에 가면, 한번에 처리할 수 있는 스크립트를 제공한다!!!
dumb AP 만드는 것과 매우 비슷하다.

0. 두번째 라우터와 첫번째 라우터를 연결하지 말고, 유선으로 두번째 라우터에 연결

1. LAN 인터페이스 수정 (Static Address로 할 수도 있으나, 쉽게 하기 위해서, Protocol DHCP client 로 설정
그리고, 첫번째 라우터와 두번째 라우터를 LAN to LAN 으로 연결 (90초 이내에)

2. 첫번째 라우터에서 두번째 라우터의 DHCP 주소를 확인하고,
두번째 라우터의 IP 주소로 GUI에 접근

3. Interfaces 로 가서, WAN과 WAN6 Delete 제거 한다.
Interfaces LAN으로 가서, Edit 누르고 Devices 탭으로 이동
br-lan 의 Configure 선택하고, Bridge ports 에서 wan을 추가해준다. 

4. System의 Startup 으로 가서, 
dnsmasq 과 odhcpd, Firewall 의 Enabled 버튼을 클릭해서, Disabled로 변경하고,
Stop 버튼을 눌러서, 서비스를 중지시킨다.

5. 이제 완전한 Dumb AP로 바꾸기 위해서, 첫번째 와 같이
1-3 과정을 수행한다. (wpad-basic 제거, wpad-mesh 설치, mesh 생성)
동일한 밴드와 채널로 설정된 것을 반드시 확인하세요.

이 과정을 마치면, Wireless의 Associated Stations에 Mesh Point가 반드시 나타나야만 합니다.
logread -f 로 상황 확인 가능

6. 두 라우터 사이의 유선 연결을 제거하고, ping 테스트를 수행한다.
(라우터의 재부팅 이후의 상황도 동일한지를 확인할 필요가 있다.)

7. 첫번째 라우터의 LAN mesh에 두번째 라우터가 가입된 상황이다. 이제 무선랜을 생성한다.
첫번째 라우터에서 2.4G 밴드에 mesh 포인트를 생성했다면, 5G 밴드에 wifi를 생성한다.

정상적인 무선랜을 설정하고, (밴드와 채널, 대역폭을 선택하고, 아래에서 무선보안에 관련된 암호화 기법과 비밀키 입력)

그리고, 802.11r Fast Transition을 체크한다.
Mobility Domain : 1234 (16진수 4자리로 선정)
FT protocol : FT over the Air 선택

8. 두번째 라우터에서도 무선랜을 생성하고 설정한다. (첫번째와 동일)

Posted by 훅크선장
, | 댓글 0

댓글을 달아 주세요

가상머신이 보편화된 요즘 IT 환경에서, 몇 년전에 만들었던 Live CD들이 쓸모가 있을까? 라는 생각이 들었지만...

그래도 만들어진 것들이 나름대로 의미가 있기에, FTP 서버를 복구하였습니다.

 

많은 ISO 파일들이 있으니, 한꺼번에 받지 마시고, 필요한 것만 받아가시기 바랍니다.

 

FTP 서버: hook7346.ignorelist.com

FTP 포트: 21번

FTP 계정: kali2ko

FTP 패스워드는 퀴즈입니다. => 영문자판상태에서 한글로 치시면 됩니다.

1) 패스워드는 한글 4글자와 특수문자 1개로 구성되어 있습니다.

2) 패스워드의 첫 두 글자는 우리나라 문자 이름입니다. 이미 1) 문장에서 나온 단어입니다.

3) 패스워드의 세번째와 네번째 두 글자는 3.1절에 외치던 문장에 있는 두 글자입니다.

“대한 독립 OO”에서 OO에 들어가는 단어입니다.

4) 마지막에 들어가는 특수문자는 3)의 단어뒤에 자주 붙는 특수문자입니다. 느낌이 오시나요? (이거 자주 헷갈리시는데, 쩜은 아닙니다. 느낌입니다.)

 

다시한번 말씀드리지만, 영문자판상태에서 한글로 치시면 됩니다.

한글 4글자와 특수문자 1개로 구성되어 있습니다.(영문자로는 총 12글자입니다.)

 

퀴즈가 안풀리시는 분은  아래 그림 화면에서 터미널창에 입력된 명령어를 주목하시면 됩니다.

--------------------------------------------------------------------------------------------------------------

 

Posted by 훅크선장
, | 댓글 0

댓글을 달아 주세요

준비사항 2가지 : 현재 컴퓨터에 Python3 설치하기 및 Telnet 프로그램 설치하기(준비하기)

 

사전 주의사항 :
공유기 판매 모델은 Xiaomi AX3200(모델 RB01, 국제 버전) 및 Redmi AX6S(모델 RB03, 중국 버전)의 두 가지 버전이 있다. 
두 버전 모두 정확히 동일한 하드웨어이지만, 유일한 차이점은 기본 펌웨어 버전(지역 잠금 여부)이 다르다는 것이다.

OpenWrt를 간단히 설치하려면 Telnet 기능이 필요한데, 문제는 일부 초기 생산 모델은 공장에서 텔넷이 활성화된 상태로 배송되었지만, 이후 장치는 대부분 텔넷이 비활성화된 상태로 배송되기 시작하여 OpenWrt를 쉽게 설치할 수 없게 되었다.
그러나 중국 버전 Redmi AX6S(모델 RB03)의 경우에는 telnet이 비활성화된 상태로 제공되더라도 기본 펌웨어(miwifi_rb03_firmware_stable_1.2.7_closedbeta.bin, 자세한 내용은 아래 참조)의 베타 버전을 설치하여 telnet 기능을 활성화할 수 있습니다. 이 베타버전 펌웨어는 Redmi AX6S(모델 RB03)에서 텔넷을 활성화하므로 OpenWrt 설치가 가능하게 할 수 있다.

 

※ 알리익스프레스에서 저렴한 중국 버전 Redmi AX6S(모델 RB03)을 구하는 것을 권장한다.
국제버전 Xiaomi AX3200(RB01 모델)인데, 공장에서 텔넷이 활성화되지 않은 경우에는 불행히도 UART 플래시 또는 "netmode: 4" 방법 외에는 텔넷을 활성화하는 알려진 방법이 없다. ㅠㅠ (많은 고난을 뚫고 펌웨어를 새로 설치할 지원자가 있는가??, UART 펌웨어 플래시는 상당히 과정이 복잡하다~!)

설치 단계:
0. 먼저 장비의 아래면에 있는 제품 라벨을 확인한다.  RB03 이라는 문자열을 확인한다. 
   가능하면, 그 옆쪽으로 장비의 시리얼넘버도 확인해서, 적어둔다. (SN: 으로 시작하는 뒤의 17자리 숫자와 글자이다.)


1. 아래 URL로 접근해서, 텔넷이 활성화되어 있는 것을 확인해보라~!
   http://192.168.31.1/cgi-bin/luci/api/xqsystem/fac_info

   아마도 아래와 같은 내용이 출력되며, 대부분 텔넷은 활성화되어 있지 않다!! ㅠㅠ

{"telnet":false,"init":false,"wl0_ssid":"xiaomi-router-rb03_miap951a_5G","ssh":false,"version":"1.0.37","facmode":false,"4kblock":false,"secboot":false,"wl1_ssid":"xiaomi-router-rb03_miap951a","uart":false}

 

2. Redmi AX6(RB03 모델)인 경우, miwifi_rb03_firmware_stable_1.2.7_closedbeta.bin 베타 펌웨어를 장비로 업로드하여, 플래시한다.

https://github.com/YangWang92/AX6S-unlock/raw/master/miwifi_rb03_firmware_stable_1.2.7.bin
(MD5: 5eedf1632ac97bb5a6bb072c08603ed7)

 

※ 중국어로 된 초기 셋업 페이지를 넘어가야 하는데, 첫번째 페이지는 그냥 넘어가고, 두번째 페이지에서 wifi 암호 겸 로그인 암호를 지정하고 넘어간다.
그리고, 다시 192.168.31.1로 접속하면, QR코드가 보이고, 그 아래에 빈칸에 아까 지정한 로그인 암호를 넣으면, 장비에 로그인된다.


아마 그러면, 인터넷에도 연결될 것이다. 그러면, 크롬 브라우저에서 영문이라 한글로 번역한 페이지로 사용할 수 있다. 장비 업그레이드로 가서, manual upgrade를 선택해서, 위의 베타 펌웨어를 지정해서, 장비를 플래시 한다.
몇 분간 기다리는 시간이 필요하다.

 

3.

https://github.com/YangWang92/AX6S-unlock/raw/master/unlock_pwd.py

에 있는 Python 프로그램 파일을 다운로드하고, unlock_pwd.py라는 이름으로 여러분의 컴퓨터 로컬 디스크에 저장한다. 그런 다음 커맨드창을 열어서, 다음 명령어줄의 <S/N>을 장비의 아래면에 있는 실제 시리얼 번호로 대체하여 실행한다. 
python3 unlock_pwd.py <S/N> 

위와 같은 형태로 명령을 실행하는데, 내 경우에는 
python3 unlock_pwd.py "36000/K1WW00000"
로 가능하면, “” 쌍따옴표를 이용해서 시리얼넘버를 둘러싸준다. (/ 특수문자 때문에 이렇게 한다.)

※ 인터넷 검색을 해서, 컴퓨터에 python3 를 먼저 설치해야만 한다.

이렇게 실행하면, 텔넷 접속을 위한 패스워드가 출력된다.
$ python3 unlock_pwd.py "36000/K1WW00000"
aeb5b9ac

 

4. 위 과정에서 확보된 패스워드 8자리 문자열을 가지고, telnet 으로 라우터 장비로 로그인한다.
$ telnet 192.168.31.1
Trying 192.168.31.1...
Connected to xiaoqiang.
Escape character is '^]'.

XiaoQiang login: root
Password: aeb5b9ac

 

BusyBox v1.25.1 (2021-10-25 11:02:56 UTC) built-in shell (ash)

 -----------------------------------------------------
       Welcome to XiaoQiang!
 -----------------------------------------------------
  $$$$$$\  $$$$$$$\  $$$$$$$$\      $$\      $$\        $$$$$$\  $$\   $$\
 $$  __$$\ $$  __$$\ $$  _____|     $$ |     $$ |      $$  __$$\ $$ | $$  |
 $$ /  $$ |$$ |  $$ |$$ |           $$ |     $$ |      $$ /  $$ |$$ |$$  /
 $$$$$$$$ |$$$$$$$  |$$$$$\         $$ |     $$ |      $$ |  $$ |$$$$$  /
 $$  __$$ |$$  __$$< $$  __|        $$ |     $$ |      $$ |  $$ |$$  $$<
 $$ |  $$ |$$ |  $$ |$$ |           $$ |     $$ |      $$ |  $$ |$$ |\$$\
 $$ |  $$ |$$ |  $$ |$$$$$$$$\       $$$$$$$$$  |       $$$$$$  |$$ | \$$\
 \__|  \__|\__|  \__|\________|      \_________/        \______/ \__|  \__|


root@XiaoQiang:~# 

 

5. OpenWrt 펌웨어를 설치하기 위한 준비과정으로 다음 명령을 차례로 실행한다.
root@XiaoQiang:~# nvram set ssh_en=1
root@XiaoQiang:~# nvram set uart_en=1
root@XiaoQiang:~# nvram set boot_wait=on
root@XiaoQiang:~# nvram set flag_boot_success=1
root@XiaoQiang:~# nvram set flag_try_sys1_failed=0
root@XiaoQiang:~# nvram set flag_try_sys2_failed=0
root@XiaoQiang:~# nvram set "boot_fw1=run boot_rd_img;bootm"
root@XiaoQiang:~# nvram commit

 

6.

https://downloads.openwrt.org/releases/22.03.2/targets/mediatek/mt7622/openwrt-22.03.2-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin

컴퓨터에 다운로드한 openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin 파일의 이름을 factory.bin으로 변경한다.
factory.bin 파일이 있는 동일한 디렉터리에서 새로운 커맨드 창을 열고, 다음 명령을 실행한다.
$ ll factory.bin 
-rw-r--r--@ 1 myname  staff  10485760 12  9 23:14 factory.bin
$ python3 -m http.server

Serving HTTP on :: port 8000 (http://[::]:8000/) ...
위와 같은 메시지가 출력되면,

다음, 다른 쪽의 텔넷 세션으로 이동해서 다음 명령어를 실행한다. 반드시 공유기에 연결된 현재 컴퓨터의 IP 주소를 먼저 확인해두어야 한다. 내 경우에는 192.168.31.234 이었다.

 

root@XiaoQiang:~# cd /tmp
root@XiaoQiang:/tmp# wget http://192.168.31.234:8000/factory.bin
Connecting to 192.168.31.234:8000 (192.168.31.234:8000)
factory.bin          100% |***********************************************************************************************| 10240k  0:00:00 ETA
root@XiaoQiang:/tmp# ls -la factory.bin
-rw-r--r--    1 root     root      10485760 Dec  9 22:20 factory.bin

공유기 쪽 세션에서 다운로드 받은 factory.bin 파일의 크기와 전송하는 쪽에서 확인한 파일의 크기를 확인한다. 꼭 제대로 확인한다.
펌웨어를 업로드한다.
root@XiaoQiang:/tmp# mtd -r write factory.bin firmware
Unlocking firmware ...

Writing from factory.bin to firmware ...     
Rebooting ...

잠시 대기한다. 한 1분 정도...

 

7. 공유기가 재부팅되면서, 컴퓨터 쪽의 IP 주소가 192.168.1.x 대역으로 바뀌면, 정상적으로 OpenWRT가 설치된 것이다.
웹브라우저로 192.168.1.1로 접근해서 확인한다. 패스워드 없이 그냥 로그인 하면 된다. 


먼저 system -> administration 으로 이동해서 패스워드를 설정하고, 그다음은 ssh 접근해서, 여러 패키지를 설치한다~!


$ ssh root@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ED25519 key fingerprint is SHA256:FnxpFDIR5ay8gj2oDEcTD6dN8KiYOvfEnLZ4YUbGuXg.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.1' (ED25519) to the list of known hosts.
root@192.168.1.1's password: 


BusyBox v1.35.0 (2022-10-14 22:44:41 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 22.03.2, r19803-9a599fee93
 -----------------------------------------------------
root@OpenWrt:~# 

 

root@OpenWrt:~# opkg update
Downloading https://downloads.openwrt.org/releases/22.03.2/targets/mediatek/mt7622/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_core
Downloading https://downloads.openwrt.org/releases/22.03.2/targets/mediatek/mt7622/packages/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/base/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_base
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/base/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_luci
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/luci/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_packages
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/packages/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_routing
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/routing/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_telephony
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/telephony/Packages.sig
Signature check passed.
root@OpenWrt:~# 

 

한글 UI 패키지를 설치해준다. 
root@OpenWrt:~# opkg install luci-i18n-base-ko
Installing luci-i18n-base-ko (git-22.339.56129-deebfa0) to root...
Downloading https://downloads.openwrt.org/releases/22.03.2/packages/aarch64_cortex-a53/luci/luci-i18n-base-ko_git-22.339.56129-deebfa0_all.ipk
Configuring luci-i18n-base-ko.
root@OpenWrt:~# 

8. 이제 한글로 된 최신 OpenWRT의 모습을 보게 된다.

 

 

 

------ 참고 -------------------

Mac OS X 에서 HomeBrew로 Telnet 명령어 설치하는 방법

 

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

==> Checking for `sudo` access (which may request your password)...
Password:
==> This script will install:
/opt/homebrew/bin/brew
/opt/homebrew/share/doc/homebrew
/opt/homebrew/share/man/man1/brew.1
/opt/homebrew/share/zsh/site-functions/_brew
/opt/homebrew/etc/bash_completion.d/brew
/opt/homebrew
==> The following new directories will be created:
/opt/homebrew/Caskroom

 

Press RETURN/ENTER to continue or any other key to abort:
==> /usr/bin/sudo /bin/mkdir -p /opt/homebrew/Caskroom
==> /usr/bin/sudo /bin/chmod ug=rwx /opt/homebrew/Caskroom
==> /usr/bin/sudo /usr/sbin/chown myname /opt/homebrew/Caskroom
==> /usr/bin/sudo /usr/bin/chgrp admin /opt/homebrew/Caskroom
==> /usr/bin/sudo /usr/sbin/chown -R myname:admin /opt/homebrew
==> Downloading and installing Homebrew...
remote: Enumerating objects: 914, done.
remote: Counting objects: 100% (376/376), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 914 (delta 363), reused 372 (delta 361), pack-reused 538
Receiving objects: 100% (914/914), 446.39 KiB | 2.40 MiB/s, done.
Resolving deltas: 100% (615/615), completed with 159 local objects.
From https://github.com/Homebrew/brew
   4abca3fa1..11cdffb4f  master              -> origin/master
 * [new branch]          setup-homebrew-test -> origin/setup-homebrew-test
 * [new tag]             3.6.13              -> 3.6.13
 * [new tag]             3.6.14              -> 3.6.14
HEAD is now at 11cdffb4f Merge pull request #14235 from Homebrew/dependabot/bundler/Library/Homebrew/json_schemer-0.2.24
Updated 1 tap (homebrew/core).
Warning: /opt/homebrew/bin is not in your PATH.
  Instructions on how to configure your shell for Homebrew
  can be found in the 'Next steps' section below.
==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics
No analytics data has been sent yet (nor will any be during this install run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Next steps:
- Run these three commands in your terminal to add Homebrew to your PATH:
    echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /Users/myname/.profile
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/myname/.profile
    eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh

 

$ echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /Users/myname/.profile
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/myname/.profile
$ eval "$(/opt/homebrew/bin/brew shellenv)"
$ brew help
Example usage:
  brew search TEXT|/REGEX/
  brew info [FORMULA|CASK...]
  brew install FORMULA|CASK...
  brew update
  brew upgrade [FORMULA|CASK...]
  brew uninstall FORMULA|CASK...
  brew list [FORMULA|CASK...]

Troubleshooting:
  brew config
  brew doctor
  brew install --verbose --debug FORMULA|CASK

Contributing:
  brew create URL [--no-fetch]
  brew edit [FORMULA|CASK...]

Further help:
  brew commands
  brew help [COMMAND]
  man brew
  https://docs.brew.sh

 

$ brew install telnet
==> Downloading https://ghcr.io/v2/homebrew/core/telnet/manifests/64
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/telnet/blobs/sha256:cf76f3b47cf35efd4d271adf52227e463298005ec9b1ac586b629d5ad94522cf
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:cf76f3b47cf35efd4d271adf52227e463298005ec9b1ac586b629d5ad94
######################################################################## 100.0%
==> Pouring telnet--64.arm64_monterey.bottle.tar.gz
🍺  /opt/homebrew/Cellar/telnet/64: 4 files, 175.2KB
==> Running `brew cleanup telnet`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

Posted by 훅크선장
, | 댓글 7

댓글을 달아 주세요

https://www.libe.net/openwrt-devices

 

OpenWRT hardware recommendation - available devices 2022

OpenWRT provides a uniform and up-to-date software for different network devices like routers or access points and delivers countless additional setting options, software packages and functions. This makes it possible to combine new and old devices from d

www.libe.net

https://techsphinx.com/wireless/best-openwrt-router/

 

5 Best OpenWRT Routers in 2022

OpenWRT unlocks the hidden potential of your router and allows complete control over the device. Here's the list of the Best OpenWRT routers.

techsphinx.com

https://www.gadgetreview.com/best-openwrt-routers

 

Best OpenWRT Routers 2022 ~ Top Router Hardware For OpenWRT

To help you find the best OpenWRT routers, we first spent multiple hours determining which options would support the open-source software. After that, we

www.gadgetreview.com

https://blog.rottenwifi.com/best-router-for-openwrt/

 

5 Best Router For OpenWRT in 2022

Find out why I chose best router for OpenWRT and what are the benefits of choosing this one. Learn how you can set up your own open source wireless network and enjoy fast internet connection without paying a dime.

blog.rottenwifi.com

 

유투브나 인터넷에 best openwrt router 로 검색해서 추천한 제품을 여러 개 봤는데, 한국에서 구하기 힘들기도 하고,

가격대가 워낙 비싼 것들도 있다보니, (※ 현재 대부분 저렴한 공유기는 ac 까지만 지원하고, ax 제품은 가격이 10만원이 넘습니다. 시장에 ax 제품이 많지만, 아직 openwrt 지원하는 제품이 매우 희소하네요~!)

내가 직접 써본 제품들중에서 아마 최신과 최고 가성비는 Xiaomi Redmi AX6S 인 것 같습니다.

알리익스프레스에서 중국 내수용 버전을 6~8만원 정도에 구매할 수 있습니다.

펌웨어가 초반에 중국어로 나와서 약간 당황스럽기는 하지만, 그래도 최고의 가성비 인 것 같습니다.

 

장점: 

1. 싼 가격에 훌륭한 하드웨어 

2. 802.11ax (wifi 6)까지 지원하는 성능, 무선랜 거리 및 속도 매우 좋음 

 

단점:

1. 랜포트가 겨우 3개 (8포트 허브나  이전의 OpenWRT 하드웨어로 Dumb AP 만들어서 확장해야  함)

2. 자체에 USB 3.0 포트 없음 (OpenWRT 자체에 디스크 연결 확장 불가로  파일서버 운영이 불가, 별도 네트워크 서버나 NAS 장비 추가 필요)

3. 중국 내수용 펌웨어에서 OpenWRT 설치의 약간 어려움. (중국어 화면에서 펌웨어 업데이트를 한번 해줘야 하는데, 중국어를 못 읽으면, 무슨 말인지 몰라서...)

 

https://ko.aliexpress.com/wholesale?catId=0&initiative_id=SB_20221209092638&origin=y&SearchText=redmi+ax6s&spm=a2g0o.detail.1000002.0 

 

redmi ax6s - AliExpress 에서 redmi ax6s 구매하고 무료로 배송받자 version

 

ko.aliexpress.com

Posted by 훅크선장
, | 댓글 0

댓글을 달아 주세요

다른 사람이 공유해 준, 구글 드라이브의 대용량 파일을 끊김없이 안전하게 오랫동안 다운로드 하는 방법으로,

rclone 프로그램을 이용해봤다. 

Mac OS X 상에서 콘솔로 실행하다 보니, 아무래도 설정파일을 맞추기가 쉽지 않았다. 대충 때려 잡아서...

 

일단 rclone-v1.59.1-osx-amd64  버전을 다운로드 받아서, zip 압축을 풀었다.

./rclone --config hook.conf config 

명령으로 나만의 config 파일을 별도로 생성할 수 있다.

원래 기본 config 파일은 계정의 홈디렉토리 쪽  ~/.config/rclone/rclone.conf  에 있다.

 

https://vision4me.tistory.com/18

 

Rclone을 이용한 대용량 데이터 다운로드

얼마 전 기다리고 있던 데이터가 드디어 오픈되면서 대용량 데이터를 받을 일이 생겼다. 아직 일부분만 release 되었는데도 100기가가 넘는 데이터이다 보니 data 사이트에서도 rclone을 이용한 다운

vision4me.tistory.com

https://hjm79.top/rclone-mount/

 

rclone 윈도우 마운트하기 raidrive, google drive stream - 마니의 블로그

2022.7.19 현재 최신버전 1.59.0 버전 기준으로 수정하였습니다. 윈도우 Rclone 설정 윈도우 마운트와 자동으로 마운트 하기를 서비스에 등록하기입니다. https://hjm79.top/%ea%b5%ac%ea%b8%80-%ed%8c%80%eb%93%9c%eb%9

hjm79.top

위와 같이, 구글 드라이브를 접근 설정하고 나면(구글 웹브라우저 인증을 받고 나면), 기본 설정 파일이 생기는데, 그 안에 추가로 나만의 설정을 넣으면 된다.

[mygoogledrive]

type = drive

scope = drive

token = {"access_token":"...---...","token_type":"Bearer","refresh_token":"...---...","expiry":"2022-09-15T19:25:56.873327+09:00"}

team_drive = 000AAAABBBBCCCCDD

root_folder_id = 1zGG11122233344455_kfkfa_AbCdhw0j

server_side_across_configs = true

 

공유하는 쪽에서 보내주는 team_drive 값을 반드시 추가해야 하고, root_folder_id 도 반드시 넣어야 한다.

자신의 구글 드라이브에 들어가서,  공유 문서함에서 공유된 폴더에 바로 들어갔을 때, 웹브라우저의 주소창에  

https://drive.google.com/drive/u/0/folders/1zGG11122233344455_kfkfa_AbCdhw0j   에서

1zGG11122233344455_kfkfa_AbCdhw0j  와 같은 문자열을  root_folder_id 에 추가한다.

 

 

./rclone --config hook.conf ls mygoogledrive:/dir/

명령으로 디렉토리 내용을 나열할 수 있고,

 

원격 파일의 로컬로 복사는

./rclone --config hook.conf -v --transfers 10 copy mygoogledrive:/dir/bigfile.img /localdir/

와 같은 명령으로, source 쪽은 디렉토리나 파일을 지정할 수 있고,  destination 쪽은 디렉토리만 지정하면 된다. 

 

hook.conf 파일을 ~/.config/rclone/rclone.conf로 복사하면, --config hook.conf  옵션이 없는 상태로도 간단히 위의 명령어들을 사용할 수 있다.

Posted by 훅크선장
, | 댓글 0

댓글을 달아 주세요

아래와 같이 Pycharm 개발환경에서는 로컬 컴퓨터의 anaconda 같은 가상환경이나 원격 ssh 로그인을 하는 interpreter 환경은 바로 지원하지만, 원격 ssh 상태에서 anaconda 환경을 사용할 수 있는 방법은 없는 것으로 알려져 있다.

 

https://youtrack.jetbrains.com/issue/PY-35978

 

No way to activate conda environment for remote interpreter : PY-35978

What steps will reproduce the problem? 1. Create a new Remote (SSH) Interpreter 2. Point it to the python executable of an existing conda env. on a remote server (ᐸenv_pathᐳ/bin/python) 3. Try to run some code using this interpreter. What is the expect

youtrack.jetbrains.com

 

그러나, 위와 같이 별도 스크립트 파일을 통해서, 원격 anaconda 환경을 인터프리터로 사용할 수 있다.

 

 

원격 ssh 로그인 환경에서 아래와 같은 쉘 스크립트 파일을 하나 생성한다. 파일명을 python 이라고 해도 되고, 다른 이름을 원하는 대로 생성하면 된다. 여기서 아래 스크립트 파일명은 python_env 이다.

 

#!/usr/bin/env bash

source /home/jetbrains/miniconda3/etc/profile.d/conda.sh
conda activate py_35978
python "$@"

 

위의 경로명에서 /home/jetbrains/miniconda3 부분은 자신의 ssh 로그인 환경에 맞게 수정한다.

 py_35978 이라는 가상환경 명도 자신의 환경에 맞게 수정한다.

※ 참고로 나는 추가적으로 python "$@" 줄을 python3 "$@"로 수정했다.


ssh 로그인 상태에서 chmod +x python_env  명령으로, 실행파일로 생성한다.

./python_env  명령을 실행하였을 때, 파이썬 쉘 환경이 되어야만 정상적인 것이다.

 

PyCharm에서 새로운 프로젝트를 생성하고, SSH 인터프리터를 원격  ssh 서버로 지정한 다음, Interpreter 를 기존의  /usr/bin/python 이 아니라,  /home/jetbrains/python_env  와 같이, 앞에 생성한 쉘 스크립트의 정확한 경로명과 파일명을 적어준다. 

 

새로운 프로젝트에서 Terminal 창을 열고서, 다음과 같은 파이썬 코드를 입력한다.
import os
print(os.environ.get('CONDA_PREFIX'))

 

아마 결과가  다음과 같이 출력되면, 정상적인 설정이 된 것이다.
/home/jetbrains/miniconda3/envs/py_35978

 

Posted by 훅크선장
, | 댓글 1

댓글을 달아 주세요

gnuradio의 예제, 2020년도에 직접 실험한 것들

HackRF one, RTL-SDR, BladeRF  등

 

 

 

 

RTL-SDR_FM_radio_receiver_with_freq_slider.grc
0.02MB
RTL-SDR_FM_radio_receiver_with_freq_selection.grc
0.02MB
get_sig.grc
0.01MB
send_sig.grc
0.01MB
FM_Receiver.grc
0.01MB
fm_example_by_HooK.grc
0.04MB

윈도우즈에서 만든 간단한 예제 FM_Receiver.grc 에서는  음성 신호 마지막이 24KHz 인데, 이 설정이 리눅스 (칼리리눅스) 에서 Alsa 오디오 드라이버에서는 지원되지 않는 음성주파수 라고 나온다. 2배로 늘려서, 48KHz 로 하면, 정상적으로 출력된다. 

48KHz로 설정하였으면, 바로 앞단계의 Re Sampling도 48로 맞춰줘야 한다.

 

Posted by 훅크선장
, | 댓글 0

댓글을 달아 주세요