We then went to see poor Tata who feel in the street and got bleeding in her brain as a result. Sadly it did affect her mental capacities significantly. We're hoping that she may improve, but it may not happen:
A few more dinners:
my dad tricking poor Jennifer again :)
A few pictures I found:
For New Years Eve, we went to a nice restaurant:
the restaurant's cat came to visit Jennifer and spent most of the evening with her :)
On New Year, we had Martine and François Franc:
Patrick build an arduino based matrix, lower res than mine, but nicer build
And that was it, thank you so much for my dad for all the nice lunches and dinners and it was a pleasure to see the rest of the family again
Problem:You want to use devices like /dev/ttyUSB0 or need to access raw USB devices under /dev/bus/usb in a docker container
This is not going to work easily for a variety of reasons. Let's go through them.
Before I go there, yes, giving --privileged will "fix" all your problems but it will also give full access to everything in your container, where the container can wipe the host device, steal password from memory outside the container and so forth. Maybe that's ok for you anyway, but if not, read on:
/dev/ttyUSB0 does not show up under /dev in the container
This does 2 things: 1) create the device in the container, and 2) give the container write access to the block device (more or that later)
docker run --device=/dev/ttyUSB0 -i -t --entrypoint /bin/bash --cap-add SYS_PTRACE debian:amd64
I added SYS_PTRACE so that you can use strace -e trace=file command to debug access problems
/dev/bus or /dev/serial do not show up under /dev in the container
This will make /dev/bus and /dev/serial show up as bind mounts in your container. Yet you will find that _fastboot devices or adb_ will not work. Strace will show you permission denied. What you want instead is this:
/dev/bus, fastboot/adb work until I disconnect/reconnect the device
Yeah, this is where things get more hairy. what the --device command above did was give access to all the block/character devices that existed when your container was created. If new ones appear (unplugging and replugging a device or rebooting it), those don't work.
I have not found a way to get docker to make them work after the container has started.
Thankfully there is a clue here: https://www.kernel.org/doc/Documentation/cgroup-v1/devices.txt
You want to go back to running
root@fuchsia-tests-x64-lab01-0002:/sys/fs/cgroup# l /dev/bus/usb/004/* | head -1
crw-rw-r-- 1 root root 189, 384 Dec 18 17:51 /dev/bus/usb/004/001
Here it's 189. What changes it the minor number (384) when you plug/unplug devices.
Finally, tell the linux container via an opaque cgroup interface, that all character devices of major number 189, are allowed:
Are you stuck with xhci_hcd 0000:00:14.0: Max number of devices this xHCI host supports is 32 ?
Wait, you're saying, but USB should support 127 devices (which include hub ports), why only 32?
Well, xhci/USB3 actually has an extra limit of 96 endpoints and each device uses 3 endpoints, which leaves you with only 32 devices. Yes, this is terrible, I agree. It's also not well documented and few people know how to get around it. https://forums.intel.com/s/question/0D50P00004905stSAA/hardware-limitations-on-usb-endpoints-xhci?language=en_US contains more details, although apparently some further details are only available under NDA, but it looks like a mess.
Originally I found this page which explains how to connect USB3 hubs with USB2 cables to save a few USB IDs, but ultimately it does not contain the real solution which is: If you need more than 32 devices, do not use (and disable) USB3/xhci
Yes, it is that sad, intel has actually designed a newer USB that is much much worse than the previous version as far as number of devices is concerned.
What wasn't clear to me is that xhci supports USB2 and USB1 devices, but no matter what devices you use (USB2 or USB1), you're still limited by that artificial 32 device limit that is due to the broken design of xhci as long as the xhci controller is handling those USB2/USB1 devices for you.
I've been told that some motherboards auto assign their USB ports to an ehci controller or xhci controller depending on what you plug into them. If so, this is the time to plug your USB3 hub with a USB2 cable to force the port to be routed to EHCI. This didn't work on the motherboard I tried on, however.
Now, the good news is that because motherboards try to work with older operating systems that may not support xhci, they usually provide an ehci controller too, the only issue is to get those USB ports assigned to the ehci controller(s).
How do you do this?
Turn off USB3 in the bios altogether (what I did). The supermicro motherboard I was using is old enough that it actually contains 2 ehci chips which then multiplied the number of devices you can plug in, gave me 8x more devices than when I had USB3 enabled (ehci can do close to 128 instead of 32 and 2 controllers instead of 1).
remove/blacklist the linux xhci driver modules. If the motherboard auto assigns xhci/ehci depending on what driver is loaded, this should work
If the motherboard only comes with an xhci controller, you are up a creek without a paddle, but you can still get an external USB2 PCI(-e) card: https://www.amazon.com/gp/product/B002RL8V7E "PCIe USB 2.0 Card - PCI-E USB 2.0 Card" actually comes with 2 USB1 controllers and one USB2 controller. It's not very clear how they are assigned (maybe dynamically depending on what is plugged into the ports). In either case the USB1 and USB2 have the high device limit you're looking for, but if somehow you're needing lots of devices (past 128), you may be able to get more out of the USB1.1 controllers (although at USB1 speeds, so that's probably not what you want). This is how that external card looks like
06:04.0 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62)
06:04.1 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62)
06:04.2 USB controller: VIA Technologies, Inc. USB 2.0 (rev 65)
We missed my new group's party last year as we were diving during that time, but this year we were back in time, and it was well worth it. Nice venue, not too crowded, and the food was much better than the last parties we attended.
The Asian Art Museum was a nice venue:
Seafood was actually good:
As usual for those parties, people were dressed up nicely:
And of course, we were in a museum, so some of the rooms were open for us too:
We were there from open to close, and it was well worth it.
Truk Lagoon (also called Chuuk), part of Micronesia, is a bit of a pain to fly to, mostly due to the fact that it gets very little air traffic and the 2 planes that fly there using a former Japanese built runway, do so at inconvenient times. It's SFO to HNL, then a long flight from HNL to Guam and one last flight from Guam to Truk. At least all of them use proper jet planes with normal luggage allowance.
The history of the battle that happened in Truk Lagoon is fascinating, but in a nutshell, the Japanese forces were on the retreat and they knew they would be attacked, so they moved out all their big ships, but were not able to move out their smaller ships in time. They were all sunk in shallow waters, creating lots of artificial reefs that can now be dived. It is sobering to see the loss of Japanese life that happened there in all those boats that got sunk. At the same time, it is quite interesting to see this slice of history with bullets, bombs, tanks, parts of airplanes and trucks loaded on those boats, and sunk.
Per recommendation, I booked with the Truk Odyssey, captained by Mike, an American who has dived all those wrecks probably more than anyone else, and did a really good video documentary on them, which we used for our dive briefings.
Our Boat for the week
The Truk Odyssey was a spacious boat with a great crew. The food was adequate but not beyond that, and the service was good but didn't match the Waow or Philippines Siren. That being said, it was more that good enough. A big plus was the knowledge of all the staff on the boat and their catering to people with rebreathers, double tanks, or fancy deco mixes. Their biggest downside IMO is that they only offer 5.5 days of diving while Trukmaster had the option of a 10 day trip instead of 7 days. Getting to Truk and back is a major pain, so doing a longer diving trip can make sense, and 8.5/9 days of diving may be a sweet spot.
Back to Odyssey, we had a great dive guide, Bobo, who knew all the boats like the back of his hand and took us in dark corners we'd never have found or dared going on our own. His knowledge of all those wrecks sure came in handy and he was also quite funny:
trying to fin the boat around to our buoy :)
our dive guides spent deco time doing bubble ring wars, this one could make them with his fin, awesome!
Even better, bubble rings with a fin kick:
Some divers had a lot of heavy gear, so our boat had a nice lift to get you back out of the water:
Truk had ok reefs that went on top of the sunk boats, but the sea life was still on the limited side compared to most places we've been to. Nonetheless, we saw a few nice things anyway:
friendly looking leopard/zebra shark
slipper lobster, cute eyes
lots of nice soft corrals
soft corals of all colors
I was able to spot a humphead parrotfish, rare in that area
During the trip, Jennifer and I did the PADI wreck diving certification. It had some useful concepts, but its limitations made it not useful at all for the kinds of diving we did where we were deep in enclosed spaces (engine rooms) for up to 15mn or more at times. It would have been helpful if Jennifer and I did wreck diving on our own without guides, but it was so much more efficient to go with experienced guides, which we did have on the boat. At least we learned a few concepts like frog kicks to avoid silting out a wreck and making it hard to see. I also got to try a pony bottle, although I couldn't get certified for tech diving and doing deco on 50% or 100% O2.
We did 4 dives per day on most day, with the option of a night dive, of which I did a few, but they were not earth shattering. We found lots of things on those boats, despite their age now, and many things having been eaten away by the seat.
Random eating-ware, bottles, medicine vials, and also gas masks:
lots of beer and sake bottles (sadly the corks failed and they were empty)
Toilets and Japanese baths:
Favourite parts of the ships were telegraphs (to send orders from one part of the boat to the other):
Engine Rooms, lights:
many doors taking us into the insides of the boats
lots of light bulbs somehow survived the water pressure
aptly named R2-D2 compressor
many light switches and plugs, it was tempting to try to turn them on :)
nice set of tools
Gas cartridges, gas tanks, ammunition, bombs:
Then, engines, plane parts, tanks, trucks, and more:
truck engine, V6 maybe?
plane parts, including wings, and fuel barrels
nice propeller blades
airplanes fuel tanks
airplane rotary engine
The outside of the boats was interesting too. Several had huge canons, and others were laying on their side and you could see their prop
Rio de Janeiro, formerly a cruise ship, was laying on its side
We also went to dive one the Betty Bomber, a plane that had crashed and was at the bottom:
Then, there was the San Francisco Maru, the deepest wreck you could dive. Deck is at 50m deep and it goes down to about 65m. We only went down to 55m, which allowed us to see the first level of the cargo hold (the lower ones were not safe for us to reach on our 24% nitrox mix). We prepared for that dive given how deep it was, and on 24% nitrox, we budgeted for only 12 minutes at the bottom. While it might seem like a long time, it sure wasn't, and even less so when I was fairly narc'ed (nitrogen narcosis), which for me caused me to struggle more at simple tasks:
We had a fair amount of technical divers with proper dive gear, including rebreathers
airplane rotary engine
I was deep enough (55m) that my computer gave me a PPO2 warning (oxygen toxicity) instead of my depth
ladder down to even deeper where I couldn't go without trimix
tank #2 and tank #3 on top of it
During the longish way up to deep deco stops on the way, Bobo, our guide, brought back the extra emergency air tanks none of us ended up needing:
And that was it for the Odyssey: 24 dives (out of 27 possible) in 5.5 days of diving. While I wish we could have dived a bit longer and didn't have to wait 36H between our last dive and our flight, we sure got to see a lot during those dives, thanks again to our expert guide, Bobo, who made sure that each and every one of those dives counted.
You can get a bit of a feel of what things looked like inside the boats with those videos:
The last day, due to unfortunate timing of the rare United flight to Truk, we spent the entire day and a few hours of the night at Truk Blue Lagoon Resort for our flight nicely timed at 02:50 (ugh!)
The founder of blue lagoon resort, a micronesian who documented what the Japanese did and started the first diving on those Japanese ships
A nice map of all the dive sites in our area
I got to see mud skippers for real, the coolest fish that can leave the water and hop on land
Lots of ruins left from the Japanese occupation
we went to say hi to the boat staff from a canoe
we're going to die! :)
and after a mere 3H of sleep we had to wake up and go to the airport for TRK -> Guam -> HNL -> SFO. Sucky times.