2024年3月7日 星期四

rustdesk windows build note

 date: 2024/03/07

reference: https://rustdesk.com/docs/en/dev/build/windows/

install: (install by administrator)

VS2022: community, with c++ development package, win10sdk 10.19041 (ps. no account)

git: https://git-scm.com/download/win

rust: https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe

llvm: https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.2/LLVM-15.0.2-win64.exe


install vcpkg:

git clone https://github.com/microsoft/vcpkg cd vcpkg git checkout 2023.10.19 cd .. vcpkg\bootstrap-vcpkg.bat export VCPKG_ROOT=$PWD/vcpkg vcpkg\vcpkg.exe install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static

setup VCPKG_ROOT in user environment.

set LIBCLANG_PATH in system environment.


build rustdesk:

git clone https://github.com/rustdesk/rustdesk cd rustdesk mkdir -p target\debug curl https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll --output target\debug\sciter.dllcargo run


rustc.exe 跑一跑會無法終止我就不知道什麼原因了.

2024年3月5日 星期二

AMD R5 340/350 R7 240/250 一點筆記

 GPU: AMD Oland

https://www.techpowerup.com/gpu-specs/amd-oland.g389

這是從鹹魚上找來的 dell 拆機貨, 打算取代 GTX750Ti 的 HDMI YUV422 4K 用. GTX750ti 沒有不好, 就是沒有 DP 輸出可用, 也無法輸出 RGB888 4K, 不然論 GPU 能力是強過 Oland 的. 然後因為我是在 ubuntu 底下用, linux 下 AMD GPU 支援度要好的多.

不過需注意的是, kernel 同時有兩支 driver 支援這系列的卡, radeon 跟 amdgpu, 而 mesa RADV 只支援後者, 所以記得在 /etc/defconfig/grub 裡加上"

radeon.si_support=0 amdgpu.si_support=1

的敘述, RADV 才能使用, 才能原生支援 vulkan.

2024年2月5日 星期一

rustdesk @ ironlake GPU

 應用情境是使用 i5-520m 的 Thinkpad x201, GPU 是 ironlake, 只有 OpenGL 2.1 可用, OS 使用 xubuntu 22.04.3, kernel 6.5.0-14, mesa 23.0.4

在這麼老的 landtop 上可以安裝 rustdesk client 的 deb, 不過啟動會碰上一堆錯誤 (serial 292 error_code 167 request_code 152 (GLX) minor_code 0). 

解法是啟動參數這邊這樣下:

---

env LIBGL_ALWAYS_SOFTWARE=true MESA_GL_VERSION_OVERRIDE=3.3 MESA_GLSL_VERSION_OVERRIDE=330 rustdesk

---

update: 可以當控端, 可以當被控端, 看 CPU 使用率應該是沒有 h/w encoder 可以支援, 無法確認.


update: 環境多設定一個參數, 即可讓 rustdesk 以純軟體方式啟動, 沒有 OpenGL 可用都無所謂 (但應該是 liunx 下才能用...):

LIBGL_ALWAYS_SOFTWARE=1

linux x11 例:

env LIBGL_ALWAYS_SOFTWARE=1 rustdesk



2023年10月17日 星期二

筆記 systemd-networkd

 簡單的說 ubuntu 體系的常會在開機時卡在 systemd-networkd-wait-online 很久很久, 如果機器本身是需要設定固定 ip, 沒有對外更沒有啥 dhcp server 可連線時就會卡很久

這裡有位高手提供一個解法: 首先:

sudo systemctl edit --full systemd-networkd-wait-online.service

在裡面找到 ExecStart, 改成像這樣:

ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --timeout=10

就可以跳過這個無意義工作.

2023年7月6日 星期四

usb ethernet adapter rename

USB ethernet 像 AX88772, AX88179 等在 ubuntu 下會重命名為 enx<MAC address> 的名稱, 我對名稱叫什麼沒有意見, 但 nfs client 有, 做 IPv6 nfs mount 時都會出現 "an incorrect mount option was specified" 的錯誤.

這問題我找了一段時間, 沒有找到解法. 直到有一天因為工作的需求使用 SUSE 這套 distro 時發現, 在它底下 USB thernet 可以正常使用 IPv6 nfs mount.... !! 只是跟 ubuntu 不一樣的是, 它 USB ethernet 就只是叫 eth? 而已, 不是照 bus-tree 這些來命名... 

好了, 那如何更改 ubuntu 下的 USB ethernet 名稱? 我在這裡找到有人提供改寫 udev rules 的方式達成:

以 root 身份增加檔案 /etc/udev/rules.d/76-netnames.rules
---
# USB device by path
# get ID_PATH if not present yet
ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
SUBSYSTEM=="net", ACTION=="add", ENV{ID_PATH}=="*-usb*", NAME="ueth%n"

---

以 root 身份重觸發 udev:

# udevadm control --reload-rules; udevadm trigger;

下次再接上 USB ethernet 時就會更名為 ueth?, 更名成這樣就可以正常使用 IPv6 nfs mount.

2023年6月6日 星期二

ubuntu 底下套用 icc 檔

 首先寫在前面, 我只針對 X11 應用, wayland 跟印表機有沒有做用我不知道, 無法驗證.

這裡只是寫寫筆記.

ubuntu 底下要裝兩個東西, colord, xiccd, 使用 colord 前最好先把 window manager 重開過, 例如 gdm (ubuntu w/o wayland), lightdm (xubuntu, xfce), sddm (lubuntu, LXDE). 要簡單一點就是重開機.

再來確認 colord 有沒有辦法正常動作: 

# colormgr get-devices 要有東西, 特別是 Device ID 那行:


一些網站說 .icc 檔可以放在 ~/.local/share/icc/ 底下, 我試過在 22.04 上沒用. 有另外要加入的 .icc 檔我認為要乖乖加在 /usr/share/color/icc/colord/ 底下.

# colormgr get-profiles 可以列出能被使用的 .icc 檔, 順路確認有沒有自己需要的:

以上確認無誤後可以用 colormgr device-add-profile 增加, 以上圖的例子就是:

# colormgr device-add-profile "xrandr-Virtual1" icc-b99d6f29391058874009aa0bf2ef2a87

# colormgr device-add-profile "xrandr-Virtual1" icc-35ae3435119b8a10eaf73839628be96a

唯需要注意的是如果 Device ID 出來的字串裡面有空白時, 直接貼上一定失效, 需要特地用引號匡起來指定哪一個輸出.


指定使用 profile 例如:

colormgr device-make-profile-default "xrandr-Virtual1" icc-b99d6f29391058874009aa0bf2ef2a87

這樣就會套用.


在 X11 底下營幕如果有做過啥 mirror 的動作時, Device ID 同時也會跑掉, 要注意.





2023年6月2日 星期五

Z6 充電線續集

 做這東西基本上沒有需求, 只是之前對於相機用直充電源線的部份一直梗梗於懷, 處心積慮的一直想做一條線可以讓 z6 使用 BC 1.2 那種 5v 2.4a 舊規格變壓器, 又可以滿速充電的東西, 然後為了想實現這樣的一條線, 從一開始 type-c 協議解析 IC IP2701, 到後面 type-C 公頭的元件, 看到後面 PD protocol 的部份時, 我才發現, 好像改改電阻就好了似的:

後來, 買到 type-c 公頭的接頭 (這個請注意有的有配電阻, 有的沒有), 實際動刀時才有點概念. 簡單的說, type-c 公頭上一般焊的那 56K 是橫跨在 Vconn 跟 CC 上的, 以 USB PD 的規格來說, CC 沒有這個電阻, 供電端不會給電, 只有 vconn 會給 5v 的電, 於是這顆 pull-up 電阻很順理成章的掛在 Vconn 跟 CC 的兩端:
這張圖就是這次的犧牲品. 我把電阻從 56K 換成 9.5K (手邊找不到 10K 0805 的料..), 如上圖所說, 換成 10K 後, 等於對用電端宣告給電端擁有 5v 3A 的供電能力, 而非原來的 500mA.

接到 z6 上的測試我忘了照, 就收進去了, 總之確定可以吃到 2A 全速充電沒問題了, 拿來給手機用也都可以正常認到 QC protocol 沒問題.

只是呢... 這條線的意義只在於, 如果還在用很老規格的 5V 2.4A 變壓器, 或是改更大電流的 5v 變壓器直供時, 這樣改才有意義, 否則以現在充電頭科技的進步, 意義不大.