mlinux 用ssh-copy-id,windows 的話,就把 .ssh/id_rsa.pub 裡面的資料加到 server 的 .ssh/authorized_keys 就可以。
C:\User\<user-name>\.ssh
High Altitude Oolong
2024/5/10
2024/5/7
enable ims serice
ims 是 4G 網路提供Voice Call 的服務 (VoLTE)。
所以要在連接4G 基地站時,做Voice 的撥/接,就要啟動 ims 服務。
這個是quectel 的命令.
MBN 好像是profile之類的 config 檔。
會針對不同營運商調整,而一般,最普通,未調整的就是 ROW_Generic_3GPP.
所以這個可以連所有營運商(?)
列出目前所有mbn檔
要select 用: AT+QMBNCFG="Select","ROW_Generic_3GPP"
要deactivate 用: AT+QMBNCFG="Deactivate" 就可以
QMBNCFG 用來確認有沒有activated profile.
然後是 ims 服務.
所以要在連接4G 基地站時,做Voice 的撥/接,就要啟動 ims 服務。
這個是quectel 的命令.
MBN 好像是profile之類的 config 檔。
會針對不同營運商調整,而一般,最普通,未調整的就是 ROW_Generic_3GPP.
所以這個可以連所有營運商(?)
列出目前所有mbn檔
at+qmbncfg="list" +QMBNCFG: "List",0,1,1,"ROW_Generic_3GPP",0x0501081F,201901141 +QMBNCFG: "List",1,0,0,"VoLTE-ATT",0x0501033C,201810121 +QMBNCFG: "List",2,0,0,"hVoLTE-Verizon",0x05010140,201811131 +QMBNCFG: "List",3,0,0,"Commercial-Sprint",0x05010205,201904021每個 list 內容是:
- index
- selected
- activate
- name
- version
- release date
要select 用: AT+QMBNCFG="Select","ROW_Generic_3GPP"
要deactivate 用: AT+QMBNCFG="Deactivate" 就可以
QMBNCFG 用來確認有沒有activated profile.
然後是 ims 服務.
at+qcfg="ims" +QCFG: "ims",0,0 OK第一個數字是configuration:
- 0: 由 MBN file 決定
- 1: 啟動ims
- 2: 不啟動ims
- 0: VoLTE is disabled
- 1: VoLTE is enabled
at+qcfg="ims",0 ok設定完後,要重新啟動:
at+cfun=1,1 OK之後狀態才會生效。
AT+COPS 與基地站相關的操作
列出所有的基地站
Act 就是基地站的技術
設定自動選擇基地站 at+cops=0:
手動選擇基地站要用at+cops=1:
1 代表 手動,後面的 2 是 format 用 numberic, 所以後面用 "46692" 也就是 Chunghwa Telecom 的 numberic 代表號,最後是基地站的技術 7 - E-UTRAN也就是 LTE.
at+cops=? +COPS: (1,"Chunghwa Telecom","Chunghwa","46692",7), (2,"Chunghwa Telecom","Chunghwa","46692",2), (1,"TWN APT","APT","46612",7), (3,"TWN APT","APT","46605",7), (3,"TW Mobile","TWM","46697",2), (3,"T Star","T Star","46689",7), (3,"TW Mobile","TWM","46697",7), (3,"T Star","T Star","46689",2), (1,"Far EasTone","FET","46601",2), (3,"TWN APT","APT","46605",2), (1,"Far EasTone","FET","46601",7), ,(0-4),(0-2)回答的每一行的每一個item是:
(stat,long alphanumeric,short alphanumeric,numeric,AcT)stat:
- 0: 未知
- 1: 可用
- 2: 目前使用中
- 3: 禁用
Act 就是基地站的技術
- 0 GSM
- 1 GSM Compact
- 2 UTRAN
- 3 GSM w/EGPRS
- 4 UTRAN w/HSDPA
- 5 UTRAN w/HSUPA
- 6 UTRAN w/HSDPA and HSUPA
- 7 E-UTRAN
設定自動選擇基地站 at+cops=0:
at+cops=0 ok CTZE: "+32",0,"2024/05/07,02:26:11" +CTZE: "+32",0,"2024/05/07,02:42:37"設玩好像重新開機,然後問目前的基地站是:
AT+COPS? +COPS: 0,2,"46692",7 OK
手動選擇基地站要用at+cops=1:
at+cops=1,2,"46692",2 OK +CTZE: "+32",0,"2024/05/07,02:54:36"好像也會重開機?
1 代表 手動,後面的 2 是 format 用 numberic, 所以後面用 "46692" 也就是 Chunghwa Telecom 的 numberic 代表號,最後是基地站的技術 7 - E-UTRAN也就是 LTE.
2024/5/2
VoLTE and IMS
ref:
以前Voice 跟 Data走的路不一樣。
Voice 是 switch - 就是像以前接線生依樣,把兩端用專用的線接起來。
Data 是 IP - 就是切割成一小塊一小塊,在網路中送到對手上。
所以當 Voice時,Data就停止了。因為要切到專用線路。
後來,Voice也想改用Data那樣,切成一小塊,在網路中傳。
所以在Data 的服務中就規劃了 IMS (IP Multimedia Subsystem),負責傳這些小塊的語音資料。
這個服務就叫VoLTE,需要經過 IMS 傳送資料。
在電信系統中,IMS了傳送語音封包,還負責以前語音的一些功能,例如DTMF,SMS。
IMS 提供的服務:
Voice 是 switch - 就是像以前接線生依樣,把兩端用專用的線接起來。
Data 是 IP - 就是切割成一小塊一小塊,在網路中送到對手上。
所以當 Voice時,Data就停止了。因為要切到專用線路。
後來,Voice也想改用Data那樣,切成一小塊,在網路中傳。
所以在Data 的服務中就規劃了 IMS (IP Multimedia Subsystem),負責傳這些小塊的語音資料。
這個服務就叫VoLTE,需要經過 IMS 傳送資料。
在電信系統中,IMS了傳送語音封包,還負責以前語音的一些功能,例如DTMF,SMS。
IMS 提供的服務:
- VoLTE over IMS
- SMS over IMS
- Emergency call over IMS
- DTMF over IMS
- SRVCC over IMS (負責舊的交換機系統溝通)
2024/4/30
Docker : container access host network
就是用 "--add-host="host.docker.internal:host-gateway",docker 會再container 的dns中加入 host.docker.internal 到 host ip
測試可以用:
測試可以用:
docker container run --rm \ --add-host="host.docker.internal:host-gateway" \ debian:stable-slim \ bash -c "apt-get update && apt-get install -y iputils-ping && ping -c 3 host.docker.internal"
2024/4/26
text-generation-webui error , character 'None'
有時候開啟chat 頁面會沒反應,一開始的 hello 訊息也沒出來。
console 的 error 是:
選了之後就好了。
download model
大多需要 lfs,所以 apt install git-lfs 之後,就可以用了。
需要license 的好像還是只能手動。
console 的 error 是:
ERROR Could not find the character "None" inside characters/. No character has been loaded. ... ... File "/home/charles-chang/text-generation-webui/modules/chat.py", line 673, in load_character raise ValueError查source 是在 parameter tab 的 chat tab 的Character option 中,沒有選任何一個(Assistant, Example),所以是None
選了之後就好了。
download model
大多需要 lfs,所以 apt install git-lfs 之後,就可以用了。
需要license 的好像還是只能手動。
msys2. SDL2 Hello
ref:
安裝需要的 package:
pacman -S git mingw-w64-x86_64-toolchain mingw64/mingw-w64-x86_64-SDL2 mingw64/mingw-w64-x86_64-SDL2_mixer mingw64/mingw-w64-x86_64-SDL2_image mingw64/mingw-w64-x86_64-SDL2_ttf mingw64/mingw-w64-x86_64-SDL2_net mingw64/mingw-w64-x86_64-cmake make測試:
$ sdl2-config --cflags --libs -IC:/msys64/ucrt64/include/SDL2 -Dmain=SDL_main -LC:/msys64/ucrt64/lib -lmingw32 -mwindows -lSDL2main -lSDL2用上面ref 的 example:
#include &;t;stdio.h> #include <SDL2/SDL.h> const int WIDTH = 800, HEIGHT = 600; int main(int argc, char *argv[]) { SDL_Window *window; SDL_Renderer *renderer; if(SDL_Init(SDL_INIT_EVERYTHING) < 0) { printf("SDL_Init failed: %s\n", SDL_GetError()); return 1; } window = SDL_CreateWindow("Hello, World!", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_ALLOW_HIGHDPI); if(window == NULL) { printf("Could not create window: %s\n", SDL_GetError()); return 1; } renderer = SDL_CreateRenderer(window, -1, 0); SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); SDL_RenderClear(renderer); SDL_RenderPresent(renderer); SDL_Event event; while(1) { if(SDL_PollEvent(&event)) { if(event.type == SDL_QUIT) { break; } } } SDL_DestroyWindow(window); SDL_Quit(); return 0; }build:
$ gcc -o testsdl testsdl.c `sdl2-config --cflags --libs`
訂閱:
文章 (Atom)