Skip to content

Fixing gcode-sender.rb / serialport.rb "invalid byte sequence in UTF-8 (ArgumentError)"

Somehow, most of the time my Arduino-based EggBot clone outputs one byte of undetermined garbage before saying "Ready". This caused gcode-sender.rb to fail with "invalid byte sequence in UTF-8 (ArgumentError)".

Eventually I found the solution in a post by Wayne Brissette here: https://www.ruby-forum.com/topic/4409620. Basically you need to treat the string as binary instead of utf-8. This small change in the code that waits for the robot to be ready fixed the issue for me:
--- gcode-sender.rb.orig
+++ gcode-sender.rb
@@ -30,7 +30,7 @@
sp.read_timeout = 0 # Necessary for Windows.
while line = sp.gets
print line
- break if line.match(/^Ready/)
+ break if line.force_encoding("BINARY").match(/^.?Ready/)
end
File.foreach(filename) do |line|
line.chomp!

Accessing iPhone (iOS 10.2.1) pictures from Ubuntu

Recent changes introduced with iOS 10 prevent you from mounting an iPhone on a regular Ubuntu installation.

The PPA by Martin Salbaba used to fix the issue, but it hasn't been updated in a while, and now when I connect my iPhone (running iOS 10.2.1) the pictures are no longer accessible, although the documents are still there.

This solution worked for me (Ubuntu 16.04):

- install libimobiledevice6 + dependencies from this PPA: https://launchpad.net/~martin-salbaba/+archive/ubuntu/ppa+libimobiledevice (follow the instructions there)

- install newer libimobiledevice version according to the "recipe" by A.B. here: http://askubuntu.com/questions/598940/libimobiledevice-1-2-ios-8-support-for-ubuntu-14-04-trusty

- install ifuse according to the same method:
cd ~/src/
git clone https://github.com/libimobiledevice/ifuse.git
cd ifuse/
sudo apt-get install libfuse2 libfuse-dev
./autogen.sh
make
sudo checkinstall

You can now mount your iPhone like this:
mkdir ~/mnt
ifuse ~/mnt
I assume the same procedure would work for an iPad too.

APA106 KiCad library (including APA-106-F8 footprint and 3D model)

Wondering what APA106 addressable RGB LED are? Get some from eBay, AliExpress or SparkFun.

In case this is useful to anyone else: here is my APA-106-F8 RGB LED KiCad library, including 3D model for pretty rendering.

You are free to use/change/distribute it in any way for any purpose. Attribution would be nice but is not mandatory.

The 3D model was made with OpenSCAD based on the instructions from Christopher J. Woodall. (The only difference is that I used meshlab to convert the OpenSCAD STL to binary instead of meshconv.)

Update 2020-12-05: the original post with the instructions is no longer online, but you can still find it here.

If you are interested, here is the OpenSCAD source file.

Linux - extract data from an "OLE Compound" file

As seen here, 7-Zip can extract the contents:
$ file PGPexch.ole
PGPexch.ole: Composite Document File V2 Document, No summary info
$ 7z x PGPexch.ole

7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

Processing archive: PGPexch.ole

Extracting [1]CompObj
Extracting [1]Ole
Extracting CONTENTS
Extracting [3]ObjInfo
Extracting [2]OlePres000
Extracting [3]MailStream

Everything is Ok

Files: 6
Size: 104336
Compressed: 108544
$ file CONTENTS
CONTENTS: PDF document, version 1.5
$
(If the OLE data is hidden in a WINMAIL.DAT file, you may have to extract it with tnef first.)