Linux
Synology File Station Upload & Download API
테스트 환경Ubuntu 22.04DSM Version 6DSM 로그인 웹 API 개발자 가이드를 확인해 보면 웹 API를 사용하여 DSM 로그인을 수행하는 방법을 설명하고 Synology NAS의 API를 기반으로 응용 프로그램을 확장하여 응용 프로그램이 HTTP/HTTPS 요청 및 응답을 통해 DSM 또는 DSM 패키지와 상호 작용할 수 있다고 한다. 본 글에서는 curl을 이용하여 해당 API를 진행한다. 가이드 문서를 보면 전체 API Work Flow는 아래와 같다. 먼저 애플리케이션이 Synology 프로덕션과 상호 작용하도록 하려면 애플리케이션이 먼저 계정과 비밀번호로 로그인해야 한다. 성공하면 API는 인증된 세션 ID를 반환하게 되는데, 반환한 세션 ID는 보관하고 다른 API 요청을 할..
[Kernel] Device Tree Overlay
테스트 환경Ubuntu 22.04SK-AM62A-LP09_02_00_05 Processor SDKDevice Tree Overlay장치 트리 오버레이는 장치 트리 구조에 대한 수정 사항을 포함하는 바이너리 파일입니다. 원래 장치 트리 소스(DTS) 파일을 직접 수정하는 대신 오버레이를 사용하면 시스템을 다시 컴파일하거나 재부팅하지 않고도 변경 사항을 동적으로 적용할 수 있습니다. 오버레이 파일(*. dtbo)은 장치 트리 오버레이 소스(DTO) 파일을 컴파일하여 생성됩니다. 장치 트리 오버레이(DTO)를 사용할지 아니면 전체 장치 트리(DT)를 수정할지는 여러 요인에 따라 달라집니다. DTO를 사용하려면 일반적인 DT 구문에 익숙해야 하며, 기본 DT를 참조해야 오버레이 수정 사항을 이해할 수 있습니다...
[Kernel] Device Tree
테스트 환경Ubuntu 22.04SK-AM62A-LP09_02_00_05 Processor SDK디바이스 트리 디바이스 트리는 SoC의 내부 메모리 매핑 주변 장치, 외부 하드웨어 및 캐리어 보드를 포함한 시스템 하드웨어를 설명합니다. 일반적으로 칩 제조사는 캐리어 보드에 대한 참조 설계 와 모듈 및 캐리어 보드에 대한 일치하는 장치 트리를 제공하므로 보드 설계를 사용자 정의하고 일부 주변 장치를 연결할 때 설계 기반으로 사용한 캐리어 보드에서 장치 트리를 수정 해야 할 수 있습니다.캐리어 보드(Carrier Board)는 주로 System-on-Module(SoM) 또는 Compute Module과 같은 작은 모듈형 컴퓨터를 확장하고 연결하기 위해 설계된 하드웨어 보드입니다. 이 보드는 SoM에서 제공..
read enter 키 입력
shell script를 사용하여 프로그램을 작성하던 중 read를 사용하여 입력 값 중 enter 키 입력 시 프로그램이 에러가 발생한다. 그래서 예외 처리를 해야한다. 본 글은 그러한 방법에 대해 정리한 글이다. 일반적으로 read 명령어는 enter 키가 입력되면 입력을 중단한다.왜냐하면 enter 키만 입력을 하면 빈 값을 변수에 저장하게 되기 때문에 input 에 빈 값이 있는 것으로 검사를 한다.if [ $input == "^[" ]위 코드의 경우 read input 에서 enter 만 입력을 했다면 input 에는 아무값도 할당이 되지를 않습니다.그러므로 위의 코드는 다음과 같이 해석이 되어 버립니다.if [ == "" ] if 문에서 사용하는 test 기호 "[" 는 실제 syntax 가 ..
Synology File Station에서 공유 링크를 wget/curl로 다운받는 방법
Synology File Station에 올라와 있는 파일을 외부에서 다운받기 위해 공유 링크를 생성 후 해당 링크를 wget 혹은 curl로 받으면 원하는 파일이 다운로드 되지 않고, HTML 파일만 생긴다. 아래 링크를 참고하여 직링크를 만들어도 증상은 동일했다.https://jgpark.kr/6 Synology File Station에서 다운로드 직링크(Direct Link) 만들기*본 포스팅은 2020년 4월 7일에 작성되었습니다. *본 포스팅은 Synology DS218+ (Version : DSM 6.2.2-24922 Update 4)을 기준으로 작성되었습니다. *2020년 11월 26일 업데이트 : URL 인코더/디코더 작동 오류 개선 및jgpark.kr 그 때 발견한 것이 CurlWge..
[Gstreamer] appsrc
appsrc 요소는 애플리케이션에서 GStreamer 파이프라인에 데이터를 삽입하는 데 사용할 수 있습니다. 대부분의 GStreamer 요소와 달리 appsrc는 외부 API 기능을 제공합니다. https://gstreamer.freedesktop.org/documentation/applib/gstappsrc.html?gi-language=c GstAppSrcGstAppSrc The appsrc element can be used by applications to insert data into a GStreamer pipeline. Unlike most GStreamer elements, appsrc provides external API functions. appsrc can be used by lin..
[Kernel] Device-tree probe Platform Driver
테스트 환경Ubuntu 22.04SK-AM62A-LP09_02_00_05 Processor SDK본 글은 플랫폼 디바이스가 디바이스 트리 메커니즘과 상호 작용하는 방법을 설명한다. 디바이스 트리는 특정 시스템의 하드웨어 구성에 대한 설명서와 같다. 커널은 디바이스 트리를 구문분석하고 이를 통해 실제로 실행중인 시스템에 대해 알 수 있다. - /driver/base/platform.c::platform_match() 함수에 probe()를 호출하는 4가지 조건이 있다. OF(open firmware,즉, devicetree) style 매칭으로 devicetree의 compatible과 of_device_id의 compatible이 매칭될 때 probe()가 호출된다.ACPI를 이용하는 방법인데, 실무..
v4l2loopback
v4l2loopbackV4L2 루프백 장치를 생성하는 커널 모듈 이 모듈을 사용하면 "가상 비디오 장치"를 만들 수 있다. 일반(v4l2) 응용 프로그램은 이러한 장치를 일반 비디오 장치인 것처럼 읽지만 비디오는 캡처 카드 등에서 읽히지 않고 대신 다른 응용 프로그램에 의해 생성된다. 위 프로그램을 사용하면 v4l2를 이용한 예제를 진행 시 웹캠이나 카메라를 연결하지 않고도 다양하게 이용이 가능하다. 패키지 다운로드git clone https://github.com/umlaeute/v4l2loopback.git빌드 진행make && make install-util sudo make installsudo depmod -a필요한 패키지를 설치sudo apt-get install makesudo apt-get..
expect 명령어
현재 회사에서 사용중인 제품이 PC와 연결되어 있는데 제품을 사용자가 수동으로 전원을 끄지 않고 원격으로 끄는 방법에 대해 찾아 보는 중에 ssh로 이용하여 poweroff 명령어를 보내는 것으로 가능했지만 ssh 접속 시 나오는 문구에 대해 자동으로 처리하는 방법에 대해 막히게 되었다. 구글링 하던 중 입력을 자동으로 하게 해주는 exepct 명령어를 확인하게 되었다. expect Linux manual page에 따르면 다음과 같이 설명한다. Expect 는 다른 대화형 프로그램과 "대화"하는 프로그램입니다. 사용자는 원할 때 직접 제어하고 상호 작용할 수 있습니다. 그런 다음 스크립트에 제어권을 반환합니다. SSH 자동화아래는 exepct를 사용하여 만든 원격종료 쉘 파일이다.#!/usr/bin..
[Gstreamer] appsink
appsink는 애플리케이션이 파이프라인의 GStreamer 데이터를 처리할 수 있도록 다양한 방법을 지원하는 싱크 플러그인입니다. 대부분의 GStreamer 요소와 달리 Appsink는 외부 API 기능을 제공합니다.https://gstreamer.freedesktop.org/documentation/applib/gstappsink.html?gi-language=c GstAppSinkGstAppSink Appsink is a sink plugin that supports many different methods for making the application get a handle on the GStreamer data in a pipeline. Unlike most GStreamer elements,..