2025 結束,進到新的里程碑。
2026 開始,看起來是個好年。
vlc --reset-config --reset-plugins-cache
Tools >> Preferences >> Audio >> Output >> Output Module
sudo apt-get update
sudo apt-get upgrade
sudo apt-get remove --purge alsa-base pulseaudio
sudo apt-get install alsa-base pulseaudio pavucontrol
sudo alsa force-reload reboot
sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/daemon.conf
sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf
多年前 seeed 自己維護,但目前只有更新到 2021(Buster)
https://github.com/respeaker/seeed-voicecard
後來有人看不下去,修改了核心驅動,並且持續維護,然後就被 fork 了
https://github.com/seeed-studio-projects/seeed-voicecard
因此之前我在 Buster 可以修改預設的音效卡,在 Bullseye 不行了
PulseAudio Sound Server
$ pactl set-default-sink 1 # 1是3.5mm Audio Jack $ pactl set-default-sink 2 # 2是ReSpeaker
最後使用 HinTak 的,一切解決!使用 Ubuntu 22.04 LTS (64-bit) 在 Pi4 實驗,核心版本
```
Linux ubuntu-desktop 5.15.0-1042-raspi #45-Ubuntu SMP PREEMPT Thu Oct 12 09:20:16 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
```
libcamera 參考 Raspberry Pi 官方教學安裝
```
sudo apt-get install -y libcamera-dev libjpeg-dev libtiff5-dev
sudo apt-get install -y qtbase5-dev libqt5core5a libqt5gui5 libqt5widgets5
sudo apt-get install -y libavcodec-dev libavdevice-dev libavformat-dev libswresample-dev
sudo apt-get install -y python3-pip git python3-jinja2
sudo apt-get install -y libboost-dev
sudo apt-get install -y libgnutls28-dev openssl libtiff5-dev pybind11-dev
sudo apt-get install -y meson cmake
sudo apt-get install -y python3-yaml python3-ply
sudo apt-get install -y libglib2.0-dev libgstreamer-plugins-base1.0-dev
cd ~
git clone https://github.com/raspberrypi/libcamera.git
cd libcamera
meson setup build --buildtype=release -Dpipelines=rpi/vc4,rpi/pisp -Dipas=rpi/vc4,rpi/pisp -Dv4l2=true -Dgstreamer=enabled -Dtest=false -Dlc-compliance=disabled -Dcam=disabled -Dqcam=disabled -Ddocumentation=disabled -Dpycamera=enabled
ninja -C build -j4
sudo ninja -C build install
```
安裝完 libcamera 以後,再安裝 libcamera-apps
```
sudo apt-get install -y libpng-dev
sudo apt-get install -y cmake libboost-program-options-dev libdrm-dev libexif-dev pkg-config
sudo pip3 install ninja meson
sudo pip3 install --upgrade meson
cd ~
git clone https://github.com/raspberrypi/libcamera-apps.git
cd libcamera-apps
meson setup build -Denable_libav=true -Denable_drm=true -Denable_egl=true -Denable_qt=true -Denable_opencv=false -Denable_tflite=false
sudo meson install -C build -j4
sudo ninja -C build install
sudo ldconfig
```
安裝完畢後,使用 `libcamera-jpeg -o /tmp/test.jpg` 拍照 OK,但使用 `libcamera-hello -t 0` 預覽就只會出現訊息,但無法預覽
```
[0:02:27.474325545] [1730] INFO Camera camera_manager.cpp:284 libcamera v0.1.0+99-4a23664b
[0:02:27.552392891] [1731] WARN RPiSdn sdn.cpp:39 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise
[0:02:27.555707769] [1731] WARN RPI vc4.cpp:390 Mismatch between Unicam and CamHelper for embedded data usage!
[0:02:27.557198504] [1731] INFO RPI vc4.cpp:444 Registered camera /base/soc/i2c0mux/i2c@1/imx219@10 to Unicam device /dev/media1 and ISP device /dev/media0
[0:02:27.557285837] [1731] INFO RPI pipeline_base.cpp:1142 Using configuration file '/usr/local/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'
Preview window unavailable
Mode selection for 1640:1232:12:P
SRGGB10_CSI2P,640x480/0 - Score: 4504.81
SRGGB10_CSI2P,1640x1232/0 - Score: 1000
SRGGB10_CSI2P,1920x1080/0 - Score: 1541.48
SRGGB10_CSI2P,3280x2464/0 - Score: 1718
SRGGB8,640x480/0 - Score: 5504.81
SRGGB8,1640x1232/0 - Score: 2000
SRGGB8,1920x1080/0 - Score: 2541.48
SRGGB8,3280x2464/0 - Score: 2718
Stream configuration adjusted
[0:02:27.562332876] [1730] INFO Camera camera.cpp:1181 configuring streams: (0) 1640x1232-YUV420 (1) 1640x1232-SBGGR10_CSI2P
[0:02:27.563005299] [1731] INFO RPI vc4.cpp:608 Sensor: /base/soc/i2c0mux/i2c@1/imx219@10 - Selected sensor format: 1640x1232-SBGGR10_1X10 - Selected unicam format: 1640x1232-pBAA
#0 (0.00 fps) exp 31455.00 ag 4.00 dg 1.00
#1 (30.00 fps) exp 29999.00 ag 3.94 dg 1.01
#2 (30.00 fps) exp 29999.00 ag 3.94 dg 1.01
#3 (30.01 fps) exp 29999.00 ag 3.94 dg 1.01
#4 (30.01 fps) exp 29999.00 ag 3.94 dg 1.01
#5 (30.00 fps) exp 29999.00 ag 3.94 dg 1.01
#6 (30.01 fps) exp 29999.00 ag 3.94 dg 1.01
```
之後想再安裝 picamera2,
```
sudo apt-get install -y libcap-dev```
一直出現錯誤訊息。
```
ImportError: cannot import name 'ControlType' from 'libcamera' (unknown location)
```
看了官方討論,目前還是沒有解決方法。
只要使用指令列就可以快樂的將 png/jpg 檔案製作成 gif 動畫檔
convert -delay 10 -loop 0 *.png animation.gif
如果覺得製作的 gif 檔案太大,可以將原始 png 檔案先壓縮過,Compress PNG 這個網站可以幫忙。
https://compresspng.com/
參考資料:
* https://unix.stackexchange.com/questions/24014/creating-a-gif-animation-from-png-files
每次只要想到升級頭就痛,總是會有出不完的包。
這次因為想安裝 tigervnc,好像不得已只能從 ubuntu 16 升級到 ubuntu 18 (荒謬吧,因為需要安裝一個應用程式而升級!)
過程中需要先更新所有應用程式,然後發現有三個程式不好升級,包括 code、firefox(我有用特定版本)、google chrome(莫名其妙的不能升級到最新版),所以就大膽的移除這三個應用程式後升級。
升級當然不會這麼順利,後來因為 Python 的連結有誤,搞了一下都沒成功,又擔心發生僅次於 rm -rf 的慘案,之前有太多神秘的問題花了很多時間解決...
簡單說,最後沒有升級到 18,然後還是順利安裝 tigervnc,但 google chrome 搞很久,一會是不能安裝,看了這篇和這篇勉強安裝到最新版,發現不能切換新酷音!!
最後最後,爬文找了許久,死馬當活馬醫,裝了舊版(103.0.5060.114-1)竟然就可以了。
沒事千萬不要亂升級
目前使用這個指令列最開心,會把 PDF 所有頁面轉成一個一個的圖檔(應該也可以特定頁面)
```
pdftoppm -jpeg -r 300 input.pdf output
```
但網路上蠻多人是使用 imagemagick 轉檔的
```
convert -density 300 -quality 100 in.pdf out.jpg
```
reference:
最近收到好心人(?)的信,告知因為 MX 的設定不對,可能會有 Email Spoofing 的可能。
會發生問題主要是 SPF 和 DMARC 設定不正確。
舉例來說,原本參考 Google 的 SPF 設定建議。
```
v=spf1 include:_spf.google.com ~all
```
但在好心人的信裡,建議使用 `-` 取代 `~`,半信半疑,但有找到某篇文章說明這兩種區別,好吧就這樣用吧。
```
v=spf1 include:_spf.google.com -all
```
另外 DMARC 原本也是參考 Google 的建議。
```
v=DMARC1; p=none; rua=mailto:dmarc-reports@google.com
```
後來好心人建議,要有積極作為,因此改為
```
v=DMARC1; p=reject; rua=mailto:dmarc-reports@google.com
```
但其實我要講的重點是。
1. rua 後面要先接 mailto 才行! 因為一開始看錯,導致掃描時顯示 DMARC 沒有 enable。
2. 我只有付少少的獎金,希望大家都愉快。
* [Google] 新增DMARC 記錄- Google Workspace 管理員說明
* [Google] 在網域供應商網站新增SPF 記錄- Google Workspace 管理員說明
* How To use an SPF Record to Prevent Spoofing & Improve E-mail Reliability
* How to Implement DMARC/DKIM/SPF to Stop Email Spoofing/Phishing: The Definitive Guide
最近遇到 crontab 編輯問題。使用者 ubuntu 想編輯自己的 crontab,使用指令 `crontab -e` 出現錯誤訊息 `crontabs/ubuntu/: fdopen: Permission denied`
網路上比較像的解法大多是修改 `/usr/bin/crontab` 的使用者和權限,但是對我沒效。
比對了另外一台正常的機器,發現是 `/var/spool/cron/crontabs/` 使用者錯誤了。正確應該是長這樣
```
$ sudo ls -al /var/spool/cron/crontabs/
total 16
drwx-wx--T 2 root crontab 4096 Jan 3 10:57 .
drwxr-xr-x 5 root root 4096 Apr 20 2022 ..
-rw------- 1 root crontab 1135 Aug 20 2022 root
-rw------- 1 ubuntu crontab 1337 Jan 3 10:57 ubuntu
```
The "direct capture" option is not working when running VNC Server on Raspberry Pi OS with the KMS driver (vc4-kms-v3d). The Fake KMS driver (vc4-fkms-v3d) is not affected.
今天在檢查網站的時候,從 developer tools 的 network 發現有一個 script 會連到 conoret.com,過很久連不上才會 timeout。
一開始以為裝到奇怪的 open source,所以將 source code 根據關鍵字查了一遍都沒有。想說可能是儲存在資料庫裡,可是 dump 全部資料庫也沒看到這關鍵字。google 了一下沒有太多討論,但用 whois 查發現是連到 .ru,而且該網域是 2022 年才註冊的,這就需要緊張了。
開始做各種實驗,比如說把套件一個一個拔掉測試,沒效果。把佈景主題換掉也沒效果,隨便建立一個頁面發現還是會連到 conoret.com。感覺是主機被駭了或是 apache 的 module 有被感染了。
因為好幾個網域都有這樣的情況,這當然超緊張的,難道我固若金湯(?)的安全設定都被破解了嗎? 而且我檢查不出來是怎麼進來的,也不知道這東西在哪裡,真沮喪...
但換了一個瀏覽器測試,發現連線不見了。哇賽那就很明顯了嘛 就是有壞壞的 extension 偷連出去。 起初懷疑最有可能就是 VPN,這種我當時沒特別檢查就裝了兩個,先移掉,沒效果。再來就要懷疑各種 downloader,例如 哔哩哔哩bilibili影片下載工具,也不是。
最後兇手找到了,是 SaveFrom Helper,這是 youtube 下載器,我蠻常用的。但最常用的還是網頁板 ssyoutube。果然移掉就正常了。耶