Opium Modell C in der Seitenansicht. Farbe Mint-Grün
Gerne möchte ich eine Lücke im Internet füllen. Hört sich grossspurig an, aber zum neuen e-Bike von Opium, dem Model C gibt es bisher noch keine Reviews. Es wurde schon längere Zeit angekündigt, gewisse Prototypen liessen sich auf Messen testen, aber bisher, gibt es noch keine Einträge (mit tatsächlichen Erfahrungsberichten) in den einschlägigen Pedelec/e-Bike Foren. (https://speedpedelecreview.com/forum/de/viewtopic.php?t=7443) Daher möchte ich diese Lücke füllen 🙂
Fotos – Züri Cycleweek 2026
Die Unterscheidung in der Optik zu den anderen Opium Velos liegt insbesondere im schwarzen Plastik, vorne beim Lenker. Bei den anderen ist der Rahmen durchgehend:
Opium Modell C in der Seitenansicht.
Federgabel:
Federgabel plus EinstellmölgichkeitenSeitenansicht auf den hinteren Teil des Velos. Hinterradmotor, Riemen und Pinion Schaltgetriebe sind im Fokus.Motor: Model HDF5101 – Art. no 501185
Eindruck und Sonstiges
Es hiess, gewisse Komponenten, wie beispielsweise der Reifen, würden sich noch ändern. Das hier getestete Velo ist ein Prototyp.
Die Produktion soll im Juni 2026 angelaufen sein.
Das Velo fuhr sich sehr gut. Vom Handling ähnlich wie ein Modell S2. Ich kann ansonsten leider nicht zu viel dazu sagen.
Auszug von Opium Website
Bild von opium (Quelle: https://rideopium.com/de/model-c-de/ – 2.7.2026)
The Epson Photo+ Tool is quite inconvenient in selecting folders. You always have to browse to the path you want to go to. If you have some photos on your main drive, and some on your NAS, you need to click through the whole dialog.
One solution is to use a “link”. In the sense of a linux file system link. This also works in windows.
## as Admin run: in cmd
mklink /D "C:\Users\[username]\Pictures\Pixel7a NAS mklink" "Z:\photos\Pixel 7a"
## Output:
symbolic link created for C:\Users\windo\Pictures\2024 Pixel7a NAS mklink <<===>> Z:\photos\Smartphone-Backups\2024 Pixel7a
Note:
Deleting the mklink folder, does not delete the remote folder.
Unlike linux, you must not create the new “linkfolder” in advance.
I asked gemini. Prompt:
generate a windows link to a folder (link a linked folder, linux: ln)
from: C:\Users\[user]\Pictures> mkdir “Pixel7a NAS” to Z:\photos\Pixel7a is that possible
For powershell (not tested):
New-Item -ItemType SymbolicLink -Path "C:\Users\[username]\Pictures\Pixel7a NAS mklink" -Target "Z:\photos\Pixel 7a"
# CORS for web-rss readers - tom 5.4.2026
<IfModule mod_headers.c>
# Check if the request is for the RSS feed OR the REST API
SetEnvIf Request_URI "^/(feed|wp-json)" IS_API_OR_FEED
# Apply CORS headers only to those specific endpoints
Header set Access-Control-Allow-Origin "*" env=IS_API_OR_FEED
Header set Access-Control-Allow-Methods "GET, HEAD, OPTIONS" env=IS_API_OR_FEED
</IfModule>
Openclaw. Grosser hype, aber so mega überzeugt hat es mich jetzt nicht. Und mit jedem zweiten Upgrade übrigens, ist er so “eingeschnappt”, dass man direkt die Konfiguration bearbeiten muss und ins Terminal abtauchen darf.
Nun, wofür ist er wirklich gut: Ich nutze Homeassistant um meinen Saugroboter (Roborock S7, liebevoll genannt: Rocki) zu steuern. Homeassistant (HASS) hatte vor einiger Zeit das Year of the Voice. Daraus entstanden ist das kleine weisse Gerät. Homeassistant Voice Preview. Die Integration von Rocki mit HASS ist relativ holprig! Sagen wir, auf einem Level, dass openclaw das sicher nicht konfigurieren könnte. Nun jedenfalls muss man zuerst die Räume aktivieren, und dann die Reinigung starten.
Nachdem ich openclaw am laufen habe, kann man relativ einfach einen Skill erstellen, mit dessen Hilfe Openclaw erfolgreich Rocki steuern kann. Es gelingt openclaw ausserdem, zuerst die Räume zu selektieren, und danach die Reinigung zu starten.
Für eine gelungene Integration mit hass voice preview bedarf es aber dem hass plugin: openclaw-homeassistant und einem mini-fix (siehe Grafik unten). Dann konfiguriert man die Stimmen über die Google API STT (welche ich irgendwie vor ewiger Zeit installiert hatte). Und man kann mittels: “Ok nabu, bitte saug die Küche und das Esszimmer” sehr zuverlässig die Reinigung starten.
Doch mei-oh-mei, ist das eine Architektur. Nabu => hass => google STT => openclaw => LLM => [1. openclaw tools, etc. => hass ] [2. response to hass about success] => google tts => nabu
Kurzer Einschub: Ähnlich, nur weniger klar konfiguriert ist es nur wenn ich meinen Signal channel verwende: Signal => openclaw => voxtral for stt => openclaw => [1. openclaw tools => hass] [2. message to signal] => tagged tts via openai => signal. Übrigens, diese Konfiguration ist aktuell nciht sehr zuverlässig. Neuerdings generiert openclaw wohl eine tagged message, um openclaw zu signalisieren, dass TTS verwendet werden soll: [[tts: dies ist die nachricht]]
Nun zum eigentlich lustigen, weshalb openclaw einfach nicht überzeugt. Es heisst ja immer, openclaw lerne, konfiguriere sich selbst usw, usw…: Mir ist aufgefallen, dass openclaw in slack immer mit einer audio nachricht antworte. Obwohl er nur antworten sollte, wenn ich anfänglich eine audio nachricht schicke. Also bitte, tomclaw merk dir das:
Neue session, neuer Verlauf:
(Funny, das slack transcript – die Nachricht ist aber 1 zu 1 der Text)
Nun, es sind die kleinen Dinge, aber wenn er quasi nicht mal das kann, hab ich nicht sehr viel Vertrauen darin, dass er das macht was ich ihm sage.
Nachtrag:
Hinzu kommt, standardmässig wird das API token für hass direkt in der TOOLS.md gespeichert und geht so bei jedem LLM request mit raus…, nicht sehr vertrauenserweckend. Ein versuch dies in eine .env-Datei zu verfrachten hat nur dazu geführt, dass er manchmal hass nicht erreichen kann. Je nach modell (sonnet-4.6) funktioniert es, mit dem günstigeren gemini-flash-3.1 eher nicht.
5.4.2026: Es könnte sein, ich habe es falsch konfiguriert. Es scheint eine openclaw-integration zu geben: https://www.getopenclaw.ai/integrations/home-assistant. Wobei ich mit diesem Ansatz wahrscheinlich nicht nabu als openclaw voice input nutzen könnte…
TL;DR: .bat scripts below to set video (via native DisplaySwitch.exe) and sound output (via nircmd). To avoid black PC monitor on startup, switch back before shutdown.
It has been a long time bugging me. I use my PC to drive a 34 inch Asus monitor, and sometimes, I use it to drive my TV. However, switching between the two is cumbersome. Sometimes, default audio is not switched and I have to do it manually. And on my TV, sitting on the couch, I have neither keyboard nor mouse. So what I do is, I use Unified Remote on my smartphone. There it’s quite easy to change display, and you have a good mouse, by using your smartphone as a touchpad.
Today I thought, i write two scripts, that make it even easier, and maybe, i can run one or the other after start, so that the correct output is set on startup (because when you forget it on TV, nothing is visible, once you start your PC, when you sit on your monitor).
Anyhow, the scripts require some 32bit/64bit windows quirks, and thanks to Google Gemini Pro 3.1, here they are.
Note 2: If you’re using Unified Remote, activate the “Start Application” remote, and put the scripts in this folder:
cmd+r: shell:startup — then two folders up in “Start Menu”
This will be a folder like this: C:\Users\[youruser]\AppData\Roaming\Microsoft\Windows\Start Menu
Note 3: If you use your TV, and then shutdown, be aware, that you have still selected TV, and the next day you will stare in a black screen. To avoid that, Gemini’s idea, which I think makes sense, is to switch back to PC, and THEN shutdown.
tv.bat
@echo off
echo Switching video output to Second Screen Only...
:: Use Sysnative to bypass Unified Remote's 32-bit redirection
if exist "%windir%\Sysnative\DisplaySwitch.exe" (
"%windir%\Sysnative\DisplaySwitch.exe" /external
) else (
"%windir%\System32\DisplaySwitch.exe" /external
)
:: Wait 3 seconds for the TV to wake up and register its audio channel
timeout /t 3 /nobreak >nul
echo Switching audio output to Samsung TV...
:: Using absolute path for NirCmd to prevent PATH errors
C:\apps\nircmd.exe setdefaultsounddevice "SAMSUNG"
echo Done!
pc.bat
@echo off
echo Switching video output to PC Screen Only...
:: Use Sysnative to bypass Unified Remote's 32-bit redirection
if exist "%windir%\Sysnative\DisplaySwitch.exe" (
"%windir%\Sysnative\DisplaySwitch.exe" /internal
) else (
"%windir%\System32\DisplaySwitch.exe" /internal
)
:: Wait 3 seconds for the monitor to register its audio channel
timeout /t 3 /nobreak >nul
echo Switching audio output to Asus Monitor...
:: Using absolute path for NirCmd to prevent PATH errors
C:\apps\nircmd.exe setdefaultsounddevice "Asus"
echo Done!
shutdown-switchback.bat
@echo off
echo Switching video output to PC Screen Only...
:: Use Sysnative to bypass Unified Remote's 32-bit redirection
if exist "%windir%\Sysnative\DisplaySwitch.exe" (
"%windir%\Sysnative\DisplaySwitch.exe" /internal
) else (
"%windir%\System32\DisplaySwitch.exe" /internal
)
:: Wait 3 seconds for the monitor to register its audio channel
timeout /t 3 /nobreak >nul
echo Switching audio output to Asus Monitor...
:: Using absolute path for NirCmd to prevent PATH errors
C:\apps\nircmd.exe setdefaultsounddevice "Asus"
:: Wait 2 seconds to ensure the display switch registers
timeout /t 2 /nobreak >nul
echo Shutting down the PC...
:: /s = shutdown, /t 0 = wait 0 seconds
shutdown /s /t 0
I have a workstation with a GPU, where I run ollama with an RTX 3060 (12 GB VRAM)
As suggested by official documentation (Ollama Models – Photoprism) qwen3-vl:latest (8B) gives the best results, and it should fit nicely with my RTX 3060.
One consideration I have, my workstation is not always on…, what happens when I upload new pictures, but ollama is not reachable? Well, I guess we’ll see.
My upgradepath: photoprism/photoprism:250426 => photoprism/photoprism:251130 (new version Changelog)
Notes:
I’m using the label and the caption option.
I’m using manual mode for testing in the beginning.
I pulled on my workstation qwen3-vl:latest or better as not to use latest: qwen3-vl:8b
Checking the picture that was edited, it seems to work! Great job photoprism team! Out of the box!
captions
# first run
docker exec photoprism photoprism --log-level=trace vision run -m caption --count 1 --force
# subsequent runs, maybe you deleted it in UI or just want to regernate:
docker exec photoprism photoprism --log-level=trace vision run -m caption --count 2 --force --source=vision
Ein sehr interessanter Einblick in den koreanischen Alltag und die koreanische Kultur. Teilweise fast schon schockierend, aber grundsätzlich einfach sehr anders. Sehr unterhaltsam und spannend geschrieben. Liest sich super.
Question: epson et 8550 black horizontal bars on photo on high quality print in last part on 10x15 photo premium glossy. what can i do?
Picture (not for AI):
Solution
1.1.2026: The thick paper setting actually worked. And it seems the black bars (or what is called tail strikes) are gone. However, in the future bending the paper against the u shape might also suffice. Let’s see.
AI: Artificial Intelligence: Google Gemini 3 Pro Preview
This is a known issue with the Epson ET-8550 (and similar EcoTank photo printers) when printing on glossy media. The black horizontal bars that appear specifically at the end of the print are caused by “Head Strike” or “Tail Strike.”
— Toll,… dass sagst Du mir jetzt…, jetzt hab ich so lange recherchiert nach dem besten Drucker… 😅
As the 10x15cm (4×6″) paper leaves the main rollers near the end of the print, the “tail” of the photo tends to flip or curl upward slightly. Because the print head is very close to the paper for high-quality printing, it physically strikes the wet surface, smearing black ink across the bottom of your photo.
Here are the specific steps to fix this:
1. Enable “Thick Paper” Setting (Most Effective)
Even though standard glossy photo paper isn’t “cardstock,” telling the printer it is “thick” raises the print head slightly, increasing the gap between the nozzle and the paper.
On the Printer Screen: Go to Settings > Printer Settings > Thick Paper and turn it ON.
In the Driver (PC/Mac): Look for “Extension Settings” or “Extended Settings” in the Maintenance or Utility tab and check “Thick Paper and Envelopes.”
Note: This setting often resets when you turn the printer off, so you may need to check it before printing again.
2. Flatten Your Paper (De-Curl)
Glossy paper often has a slight natural curl, especially 10×15 sizes coming from a pack.[1]
Check your paper stack.[1][2][3][4][5] If it curves upward (like a smile U), the edges will lift and hit the print head.
Gently bend the stack in the opposite direction to flatten it out before loading it. The paper should be perfectly flat.
3. Use the Rear Paper Feeder
If you are currently using the front cassette tray, switch to the Rear Paper Feeder.
The front cassette forces the paper to make a 180-degree turn, which can induce a curl (“memory curl”) in the paper right before it hits the print head.
The rear feed has a straighter path, keeping the paper flatter and reducing the chance of the tail popping up at the end.
4. Clean the Paper Path (Roller Maintenance)
If you have already had several of these misprints, there is likely wet ink on the output rollers or the bottom of the print head.
Run the Paper Guide Cleaning utility from the Maintenance menu.
If the bars persist, you may need to manually clean the “ribs” (plastic guides) inside the printer with a lint-free cloth and a little window cleaner (ensure the printer is unplugged) to remove ink buildup that is transferring to your new prints.
Summary of the Fix: Turn ON the Thick Paper setting and try feeding the paper from the Rear Feeder.[6] This combination solves the problem for almost all ET-8550 users.
TL;DR: I can run some basic inference and tts, but there is no proper pipeline or any integration available with home assistant…, so I’ll next go back to rhasspy.
In my last post I setup my Roborock S7 (aka Rocki) with home assistant and setup a voice assistant with the voice preview device and google gemini models.
In this post, I want to document my exploration into running a proper speech-speech-omni model and control Rocki. First step, get the model to run and somehow be able to input speech.
git clone https://github.com/ictnlp/LLaMA-Omni2
cd LLaMA-Omni2
# sidetrack to install anaconda: go to https://repo.anaconda.com/archive/
# i selected https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-x86_64.sh
# I run linux in WSL on windows
conda create -n llama-omni2 python=3.10
conda activate llama-omni2
pip install -e .
# now run python shell
python
> import whisper
> model = whisper.load_model("large-v3", download_root="models/speech_encoder/")
> exit()
huggingface-cli download --resume-download ICTNLP/cosy2_decoder --local-dir models/cosy2_decoder
model_name=LLaMA-Omni2-7B
huggingface-cli download --resume-download ICTNLP/$model_name --local-dir models/$model_name
# it's downloading a lot of large files...
# maybe the 7B is a little big for my RTX3060 with 12GB VRAM, and also might be slow, so for testing, let's get the smallest 0.5B model.
# And who knows how this will work, like does whisper run in parallel, then blocking VRAM?
model_name=LLaMA-Omni2-0.5B
huggingface-cli download --resume-download ICTNLP/$model_name --local-dir models/$model_name
# FIX 1: now somehow we need matcha-tts I ran into errors and doing this allows demo to run
pip install matcha-tts
# FIX 2: install ffmpeg (source: https://gist.github.com/ScottJWalter/eab4f534fa2fc9eb51278768fd229d70)
sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install ffmpeg
# open 3 terminals, make sure to activate the conda environment in each
# 1)
python -m omni_speech.serve.controller --host 0.0.0.0 --port 10000
# 2)
python -m llama_omni2.serve.gradio_web_server --controller http://localhost:10000 --port 8000 --vocoder-dir models/cosy2_decoder
# this has problems: jsonable_encoder stuff, gemini recommended to:
pip install --upgrade pydantic
pip install --upgrade fastapi
# problem persists...
# 3)
model_name=LLaMA-Omni2-0.5B
python -m llama_omni2.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path models/$model_name --model-name $model_name
Ok, it didn’t work out of the box. 😐
Trying the local inference python script. This works! I adapted the questions, recorded my own audio and you get a response: “Why is the sky blue?”
I adapted it with my own question: Why is the sky blue.
run_llama_omni2.py takes ~18.6s
run_cose2_decoder.py takes ~14.1s
Result:
So: I think I need some more out of the box approach here. Maybe go back to Rhasspy?!
Update 29.03.2026: running openclaw, and integrate hass with the openclaw-homeassistant plugin allows for proper natural language commands! Not trivial to setup (neither openclaw, nor the plugin) though!