2026年1月15日 星期四

[創業] 2026 開工大吉

2025 結束,進到新的里程碑。 

2026 開始,看起來是個好年。

2025年4月30日 星期三

[海海人生] 吾家有女初長成

小妹長大了,是一個青少女了

2024年11月29日 星期五

[胡言亂語] 爛透了!NordVPN!

退款不成功,還持續訂閱!爛透了!

2024年6月15日 星期六

[Ubuntu] Audio output failed: The audio device "default" could not be used: Connection refused.

不知道改到什麼設定,我的 Ubuntu 16 使用 VLC 播放影片會出現 "Audio output failed: The audio device "default" could not be used: Connection refused."。
找了這篇,試著照做結果沒用。
vlc --reset-config --reset-plugins-cache
Tools >> Preferences >> Audio >> Output >> Output Module


後來發現如果用 pavucontrol,會一直出現 "pavucontrol establishing connection to pulseaudio" 連不上的訊息,判斷是 pulseaudio 問題。

因此參考這篇,重新安裝 pulseaudio,結果還是沒用。

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

2024年6月8日 星期六

[海海人生] 生老病死

今天湯圓在照超音波的時候突然死了,雖然已知他的腫瘤很大,但還是很驚訝怎麼這麼突然。

小哥的第一堂人生課,生老病死。

2024年4月17日 星期三

[RPi] 在 Bookworm 使用 ReSpeaker

話說,最近兩篇都在寫 ReSpeaker,因為問題真的太多了 Orz

現在升級到 Bookworm(2024-03-15 Bookworm 64),原本使用好心人 HinTak 的也不能用,但還好討論區裡面有講解法。
```
cd ~
sudo rpi-update 1440b3e0b52075a9ec244216cddcf56099c28dfa
git clone https://github.com/HinTak/seeed-voicecard
cd seeed-voicecard
git checkout v6.6
sudo ./install.sh
sudo sync; sudo reboot
wget https://raw.githubusercontent.com/ubopod/ubo-sdk/main/system/setup/install_wm8960.sh
sudo bash install_wm8960.sh
sudo sync; sudo reboot
```

https://github.com/HinTak/seeed-voicecard/issues/28
https://github.com/HinTak/seeed-voicecard/issues/31

> I don't know why...

2023年11月9日 星期四

[RPi] 在 Bullseye 和 Buster 使用 ReSpeaker

多年前 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 的,一切解決!
https://github.com/HinTak/seeed-voicecard

2023年11月5日 星期日

[Ubuntu] 安裝 libcamera + picamera2 失敗!

使用 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
sudo apt-get install -y python3-prctl
sudo apt-get install -y python3-opencv
pip3 install picamera2

```


一直出現錯誤訊息。

```

ImportError: cannot import name 'ControlType' from 'libcamera' (unknown location)

```

 看了官方討論,目前還是沒有解決方法。

2023年10月26日 星期四

[Ubuntu] 製作 gif 動畫和壓縮 png 檔案

只要使用指令列就可以快樂的將 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

2023年10月2日 星期一

[Ubuntu] 沒事千萬不要亂升級

每次只要想到升級頭就痛,總是會有出不完的包。 

這次因為想安裝 tigervnc,好像不得已只能從 ubuntu 16 升級到 ubuntu 18 (荒謬吧,因為需要安裝一個應用程式而升級!) 

過程中需要先更新所有應用程式,然後發現有三個程式不好升級,包括 code、firefox(我有用特定版本)、google chrome(莫名其妙的不能升級到最新版),所以就大膽的移除這三個應用程式後升級。

升級當然不會這麼順利,後來因為 Python 的連結有誤,搞了一下都沒成功,又擔心發生僅次於 rm -rf 的慘案,之前有太多神秘的問題花了很多時間解決...

簡單說,最後沒有升級到 18,然後還是順利安裝 tigervnc,但 google chrome 搞很久,一會是不能安裝,看了這篇這篇勉強安裝到最新版,發現不能切換新酷音!! 

最後最後,爬文找了許久,死馬當活馬醫,裝了舊版(103.0.5060.114-1)竟然就可以了。 

 

沒事千萬不要亂升級

2023年9月3日 星期日

[Tips] 在 Linux 將 PDF 轉成 JPG

目前使用這個指令列最開心,會把 PDF 所有頁面轉成一個一個的圖檔(應該也可以特定頁面) 

``` 

pdftoppm -jpeg -r 300 input.pdf output 

``` 

 

但網路上蠻多人是使用 imagemagick 轉檔的 

``` 

convert -density 300 -quality 100 in.pdf out.jpg 

``` 

reference: 

* https://stackoverflow.com/questions/43085889/how-to-convert-a-pdf-into-jpg-with-command-line-in-linux

2023年7月18日 星期二

[胡言亂語] 找 OLED 教學之啟發

https://gurgleapps.com/learn/projects/how-to-display-your-own-custom-image-on-a-small-oled-screen-using-our-free-tool

影片中的小孩大概只有小學和國中,台風真好,可以清楚解釋原理。

 

 嗯,有為者亦若是。

2023年6月27日 星期二

[資訊安全] Email Spoofing

最近收到好心人(?)的信,告知因為 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 管理員說明 

* [MX 工具] SuperTool Beta7 

* [工具] DMARC Check 

* 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

2023年6月10日 星期六

[創業] 好日子結束了

2023/06/08。 該來的還是要來,細水長流吧。

2023年5月3日 星期三

[Ubuntu] Crontab Permission denied

最近遇到 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

```

2023年4月14日 星期五

[RPi] no authorized to perform operation

使用 2023-02-21-raspios-bullseye-armhf-full.img 的版本,或是有更新 raspberrypi-kernel,當按住 pico 的 BOOTSEL 要更新韌體時,出現 "no authorized to perform operation" 錯誤訊息。

爬文後,發現是 udisks daemon security policy 造成的。步驟是修改 /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy。
===
  <!-- Mounting filesystems -->
  <action id="org.freedesktop.udisks2.filesystem-mount">
    <description>Mount a filesystem</description>
...
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
===

改為
===
  <!-- Mounting filesystems -->
  <action id="org.freedesktop.udisks2.filesystem-mount">
    <description>Mount a filesystem</description>
...
    <defaults>
      <allow_any>yes</allow_any>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
===

修改後不用重啟任何服務,直接再做一次就 OK 了

2023年4月12日 星期三

[RPi] cannot currently show the desktop

幾個方法:

1. 設定桌面登入。sudo raspi-config > 1 System Options > S5 Boot / Auto Login > B4 Desktop Autologin

2. 重新安裝 LXsession 程式,sudo apt-get install --reinstall libgtk2.0-0 && sudo apt-get install --reinstall lxsession

3. 正確設對桌面解析度(例如 800x600)。/boot/config.txt
===
hdmi_force_hotplug=1
framebuffer_width=800
framebuffer_height=600
hdmi_group=2
hdmi_mode=9
===

4. 正確設對 VNC 解析度(例如 800x600)。sudo raspi-config > 2 Display Options > D5 VNC Resolution > 800x600

5. 設定正確螢幕解析度。sudo raspi-config > 2 Display Options > D1 Resolution > DMT Mode 9 800x600 60Hz 4:3 (2022-01 以後預設不出現/不適用)


最後找了半天,比較了正常的和不正常的設定,包括 /etc/vnc 和 /etc/X11 下面的所有檔案和目錄,看不出差異。

又參考這篇翻了 /var/log/vncserver-x11.log 和 sudo systemctl status vncserver-x11-serviced.service 服務狀態,發現雖然服務有啟動,但是出現 "AgentInitCheck: agent comms failure" 錯誤訊息,實際上 vncserver-x11 沒有正常啟動。

最後找到這篇,雖然解法不正確,但有提供方向 ==>
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.


簡單說,把 /boot/config.txt 裡面的 dtoverlay=vc4-kms-v3d 註解掉,重開機後收工!

參考:
* How to Fix Raspberry Pi's 'Cannot Currently Show the Desktop' Error
* Disabling direct capture on Raspberry Pi using the command line

2023年3月20日 星期一

[創業] 敗公司

2023/03/19 賀成交。希望能再戰十年。

2023年2月4日 星期六

[Security] conoret.com

今天在檢查網站的時候,從 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。果然移掉就正常了。耶