Out of curiosity, why would the group that hands out HDCP certifications certify a chip like this? I get that practically speaking they have to issue keys for some capture devices for legitimate uses, but this chip/board seems like something the HDCP folks would want to keep locked down. I think HDCP is silly/evil, but this chip does seem counter to its purpose.
Sure but you can't legally sell a product using the leaked keys AFAIU. Plus this supports 4K (albeit at 30 Hz). This board is built around what appears to be a fully legit HDMI chip with HDCP compliance best I can tell (MS2130? Github page also mentions a couple other related chips... one of them has to be the HDMI chip), though I'm having trouble finding a datasheet link because Google is dominated by this Hackaday page.
Why the HDCP people tolerate such a chip/don't tightly control who can buy it is what I'm asking... I'm guessing maybe this is an "off label" use of a chip that was meant for more mundane HDMI decoding uses. Which kinda illustrates why HDCP is silly and an annoyance for consumers that doesn't really stop the "real" pirates making content rips people are downloading.
Though I didn't intend this as a loaded question, I might totally misunderstand what's going on technically speaking and would love for someone who knows about this to explain.
I have an Elgato Cam Link 4K and it's a pain to use with my Sony camera and M1 MacBook (webcam scenario).
I find that the card needs an entire USB _bus_ (not port) to itself to function without the stream freezing regularly - even on 1080p. This means I can't connect it via my thunderbolt dock (CalDigit Element Hub).
Does anyone know if this open implementation would have the same issue?
I have no issues with the Elgato Cam Link 4K on my setup: M1 Pro <-> Dell WD19TB <-> Cam Link <-> Sony camera.
The dock is also connected to a 1440p@240 monitor and a 1080p@60 monitor, so the capture card is not the only device taking bandwith from the USB bus.
EDIT: Now that I remember, sometimes the cam link gets very hot and freezes, not only with my M1 but also with a Dell laptop running linux. Maybe your problem is related to running the capture card at high temperatures.
I too had issues with the Elgato on a MacBook. But it’s a piece of shit and a pain in the ass on the PC as well for me. Hate that thing with a passion.
We also bought several cheaper generic ones and they work/don’t work just as often as the Elgato.
That being said, we switch around our setup a lot, and we juggle multi-can streams.
Me and two of my friends have been using the Elgato 4K cam link for a year every day for streaming. Not a single issue reported. Perhaps you have a faulty unit.
I've found this to be an issue with Thunderbolt docks generally. I've tried Cam Link 4K with the Caldigit TB3 dock (TS3?) and the OWC Thunderbolt Dock (the big ass one with the power adapter the size of a Volkswagen bus) and some Anker TB3 dock.
All of them glitched, compared to plugging it straight into the Mac (albeit via a dongle since it was always MacBook Pro models which lack the regular USB port and only have the Apple fantasy-world ports). This kind of soured me on Thunderbolt docks.
The other problematic device was ATEM Mini (which is like a Cam Link except it has 4 HDMI inputs instead of 1) so perhaps it is some kind of HDMI → Thunderbolt → USB fuckery?
I love how when there's no USB-C on the iPhone, it's a world-historical tragedy.
But somehow having FOUR USB-C ports (which, yes, also support Thunderbolt, but are also fully-legit USB-C ports) on the Mac means they are now "Apple fantasy-world ports".
I’ve had a similar issue and it was/is driving me crazy.
Plugging into a SonnetTech TB4 Echo5 dock ocassionaly makes the stream freeze. I actually wrote to them a support message and they were detailed in the response, but we didn’t manage to resolve it. If it’s of any help here’s their response. https://pastebin.com/qbmZH65n
Plugging into MacBook using the official “AV display adapter” (as a USB to USB-C adapter) works steady, both at 1080p 60fps and 4k30fps.
But shockingly - I plugged the AV display adapter with the cam link dongle into the back of my Pro Display XDR, and it’s also working fine at 1080p60fps. That’s surprising since that thing is a usb hub, but also afaik it’s a USB 2.0 hub! I imagine it’s due to the XDR display being 6k and needing lots of TB bandwidth, so I’m still surprised it works steady via the USB-C Usb 2.0 hub in the back of my Pro Display XDR.
Thunderbolt 3 docks usually bring their own USB host controller to the table.
That host controller connects to the rest of your system over PCIe. So the dock has its own private USB, so to speak.
If you have a second Thunderbolt dock, you should be able to daisy-chain both docks, totally isolating your card from all your other USB devices while still maintaining that one-single-cable neatness.
It's a bit annoying that this card doesn't come with an in-situ programmer to update the NOR FLASH. Other than this, I'm pretty excited about it. I can't wait for it to be cheaply be available from Aliexpress or other.
The no-name capture cards are all based on the same few fixed-function MacroSilicon chips like the one used here, so the HAD quip about issues with them that you'd avoid with this doesn't really make sense.
There actually were a few legitimate issues with the previous generation of USB-2.0-only capture chips from MacroSilicon. The original MS2109 used in all those AliExpress capture dongles was designed for 720p capture; it could do 1080p at 30fps, but it would downscale the input to 720p and rescale it up in the process. 1080p mode was still useful, however, as it made MJPEG quantization artifacts far less prominent [1].
There was also another huge problem with those dongles, but it was not MacroSilicon's fault. At some point most of the sellers started offering a more expensive "USB 3.0" variant reportedly capable of capturing 1080p at 60fps... which of course was a scam, since the MS2109 is 2.0 only (literally the only difference in these cards was the connector being blue, they didn't even have 3.0 pins). Many YouTubers, not knowing about this, kept recommending people to get the 3.0 version, which resulted in these cards getting a negative reputation for being "okay but unreliable".
This project is basically what those fake cards should have been.
Does anyone have any advice (other than 'just do it, try it, learn as you go, pick a datasheet') for getting into higher-speed designs, in order to play with USBC/HDMI/Ethernet/SATA/etc.?
I enjoy Phil's Lab on YouTube which seems a pretty good resource, but I still think it would be naïve of me to jump in and expect to be able to design something that works.
E.g. I couldn't find a USB-C SATA adaptor that used PD to power the disk. Even the USB3 ones will do a 2.5" disk, but all of them, even if USBC, require a separate power cable for hungrier disks. I thought that was silly, and ought to be relatively easy to make.
Is there a good book for taking (digital) electronics beyond basics (i.e./and that isn't through a lens of Arduino or ESP or whatever) as a hobby? Protocols & design/layout for higher speeds is I suppose where I'm most lacking.
My background: EE but professionally only CS. (Even at university ended up choosing more CS-y/information-theoretic-y courses than electronics tbh.) Hobby electronics (off & on I suppose) since as long ago as I can remember, but haven't designed a PCB since high school. Most recently (a year or so ago) breadboarded a USB serial Ethernet bridge for my Prusa Mini.
I did some FPGA stuff at university, I'm more comfortable there for sure, but only on a dev board someone else has made - I'd have the same problem getting started with designing an FPGA board as I described for USB/HDMI/etc. above.
My experience was that implementing/modifying an existing (basic) fpga ethernet stack is pretty doable, since you quickly get an indication that something works and there are very distinct layers.
The colorlight 5a-75b together with Litex is a great way to get started for cheap.
> I couldn't find a USB-C SATA adaptor that used PD to power the disk
Would this even be possible? I assume some devices can do PD both ways (for charging and as a source). But if that’s even possible, I’d imagine it to be rare. I’d love to know the case from someone who knows more.
I mainly think of PD ports in reference to charging, not data. I know dock PD ports do both, so I know data+PD is possible, but can my laptop's USB-C port support PD in both directions (charging and powering a peripheral)?. That's my main question -- most of my exposure to PD is with charging only... not powering peripherals. I know I can charge my phone with my laptop, but I've never looked to see how fast it is charging.
And more importantly, what do available chips support? How easy is it to get chips that support PD + data?
This isn't my area of expertise, so I was hoping someone would be able to say -- Yes, it's possible, I do this all the time. Or -- it's theoretically possible, but not widely supported, so no one does it.
> but can my laptop's USB-C port support PD in both directions (charging and powering a peripheral)?.
Two of the USB-C ports of my Dell XPS 13 9380 provide 5A/3A over PD, and the third one provides 5A/1.5A. All of them can negotiate both sink and source PD contracts.
If your laptop can be charged via USB-C port and you can attach peripherals to the same port, it's almost certain that it can negotiate a source PD contract as well. That doesn't automatically mean you'll get more than 5V though, so such PD port may still be useless for powering a disk drive enclosure without additional voltage regulation.
I'm assuming you mean 5V/3A and 5V/1.5A. If so, that is explicitly NOT PD. USB-C supports 3A and 1.5A purely by setting resistor values on the CC pins, and does not require the BMC PD negotiation protocol.
Many PD controllers support this for 'sourcing' (5V/1.5A or 5V/3A) natively, since it's a common use case for laptops.
No, this is 5V/3A and 5V/1.5A as communicated via PD 3.0. In this case you can achieve the same result without PD (well, almost - you still need it for role swap), but that's not what I was talking about.
What scenario would your laptop be providing power (being the source), while simultaneously being the receiver of data (data sink)? Not sure I see the use case for that, regardless of whether you can achieve 5V/3A over PD.
You need PD for power role swap, for example when (un)plugging a power supply to already connected USB-C hub. You also need PD for alt-mode negotiation. You can negotiate a 5V/3A contract to, let's say, power a DisplayPort/HDMI dongle - that won't work by simply signaling 1.5A or 3A with a resistor.
Understood you need PD for alt modes, that's a given. I never thought about the scenario where you have a powered USB hub and you switch from powering it via a brick to powering it via your laptop... interesting, and actually very reasonable scenario. I guess given you have PD already built-in, it's not too hard to integrate that functionality either.
Someone else brought that up, I don't really know, but my phone says it's 'charging rapidly' if I plug it into my laptop, so I just assumed it'd be possible.
You might be misunderstanding the idea. "used PD to power the disk" means the adapter used PD to obtain electricity, and then used that electricity to power the disk drive via the drive's normal power terminal. The disk drive still wouldn't know anything about USB Power Delivery.
Nope, that would be my advice. It's not as hard or as demanding as you think, even a naive design, with just a modicum of attention to ground loops and impedance matching, plus the advantages of modern layout tools, 4+ layer stackups, trace clearances, and high-performance integrated transceivers, will probably work fine.
Your first designs may or may not pass a radiated emissions test, and it may or may not work reliably if you want it to fly through the Van Allen belts or in an industrial panel full of VFDs, and you might want to aim for last year's implementation rather than the bleeding edge. While it can be made complicated if you want to truly and thoroughly understand it, just following basic rules of thumb can go a long, long way.
Just following basic rules of thumb (minimizing current loop area, length matching, impedance matching through trace width, series termination, etc.) may yield a working device, but how do you learn from that?
At some point you're already applying all those rules of thumb, but how do you then actually measure what works and what doesn't so that you can improve beyond that?
It seems it is difficult to find resources teaching that, and also the equipment needed becomes very specialized and expensive fast.
Those topics were the subject of the 3rd and 4th years of my EE degree (which was not cheap, and which involved some very specialized and expensive lab equipment).
But after 10 years in the field, I've sadly forgotten most of that and learned pragmatism instead.
The answer, unfortunately, is you can't. Once you start talking about USB3 or HDMI, the testing equipment to test it 'properly' as you would professionally gets to be easily $10k, and can be upwards of $100k depending on the interface.
Interesting. Another approach could be to build a USB-C cable that has both a USB-C plug and a male barrel plug in a Y on one end. The USB-C plug is what you expect, but the barrel jack is fed USB-PD 12V/3A.
(Benson Leung is probably having a bad dream right now.)
You might be interested in some podcasts by Oxide Computer Co - they talk in depth about their challenges designing and building a high speed top of rack ethernet switch.
They go into problems of high speed circuit design in general, and the high end gear and insane debugging skills needed to do so!
See their Twitter, or Spotify (Oxide and Friends) - eg "tales from the bring up lab".
You don’t see that because it just isn’t supported by what people make. No laptops are going to provide PD power outputs at relevant voltages because they would need to have a huge amount of switching circuitry for a situation that is not strongly user demanded. Spotty support means products are never built to expect it to exist, and we continue with all the problems of USBC being borderline unusable for what you would expect to be simple tasks. PD is a bag of hurt at the best of times unfortunately.
TLDR: with higher speed designs, there is not much info in the hobbyist space, because the designs get more complicated in terms of pcb layout, signal integrity and so on, and a lot of the tools used for more advanced PCB design work are unfortunately closed source. That said it is possible to do successful high speed designs with some rules of thumb that 90% would work on the first board dev. And open source tools like KiCad are getting there in terms of feature parity with the closed source tools. Happy to talk, my contact info is in my profile.
Can this be used with pikvm? https://pikvm.org/
Passthrough to physical monitor instead of "virtual" monitor would be ideal for my use case. I wish I could mirror in software but I have not found a way to do so.
This is a PCB wrapped around a black box chip HDMI to USB chip, according to the article. Is that interesting all by itself? I expected that open source HDMI capture would involve an FPGA or similar decoding the HDMI signal.
55 comments
[ 2.6 ms ] story [ 115 ms ] thread> Integrated pre-programmed HDCP keys for Loop Out
So my answer would be. Yes
Why the HDCP people tolerate such a chip/don't tightly control who can buy it is what I'm asking... I'm guessing maybe this is an "off label" use of a chip that was meant for more mundane HDMI decoding uses. Which kinda illustrates why HDCP is silly and an annoyance for consumers that doesn't really stop the "real" pirates making content rips people are downloading.
Though I didn't intend this as a loaded question, I might totally misunderstand what's going on technically speaking and would love for someone who knows about this to explain.
I’m sure Chinese manufacturers care a lot about what the HDCP people want.
I find that the card needs an entire USB _bus_ (not port) to itself to function without the stream freezing regularly - even on 1080p. This means I can't connect it via my thunderbolt dock (CalDigit Element Hub).
Does anyone know if this open implementation would have the same issue?
The dock is also connected to a 1440p@240 monitor and a 1080p@60 monitor, so the capture card is not the only device taking bandwith from the USB bus.
EDIT: Now that I remember, sometimes the cam link gets very hot and freezes, not only with my M1 but also with a Dell laptop running linux. Maybe your problem is related to running the capture card at high temperatures.
We also bought several cheaper generic ones and they work/don’t work just as often as the Elgato.
That being said, we switch around our setup a lot, and we juggle multi-can streams.
¯\_(ಠ_ಠ)_/¯
All of them glitched, compared to plugging it straight into the Mac (albeit via a dongle since it was always MacBook Pro models which lack the regular USB port and only have the Apple fantasy-world ports). This kind of soured me on Thunderbolt docks.
The other problematic device was ATEM Mini (which is like a Cam Link except it has 4 HDMI inputs instead of 1) so perhaps it is some kind of HDMI → Thunderbolt → USB fuckery?
But somehow having FOUR USB-C ports (which, yes, also support Thunderbolt, but are also fully-legit USB-C ports) on the Mac means they are now "Apple fantasy-world ports".
Apple can't win, it seems.
Plugging into a SonnetTech TB4 Echo5 dock ocassionaly makes the stream freeze. I actually wrote to them a support message and they were detailed in the response, but we didn’t manage to resolve it. If it’s of any help here’s their response. https://pastebin.com/qbmZH65n
Plugging into MacBook using the official “AV display adapter” (as a USB to USB-C adapter) works steady, both at 1080p 60fps and 4k30fps.
But shockingly - I plugged the AV display adapter with the cam link dongle into the back of my Pro Display XDR, and it’s also working fine at 1080p60fps. That’s surprising since that thing is a usb hub, but also afaik it’s a USB 2.0 hub! I imagine it’s due to the XDR display being 6k and needing lots of TB bandwidth, so I’m still surprised it works steady via the USB-C Usb 2.0 hub in the back of my Pro Display XDR.
If you have a second Thunderbolt dock, you should be able to daisy-chain both docks, totally isolating your card from all your other USB devices while still maintaining that one-single-cable neatness.
Is it compatible with generic v4l drivers?
There was also another huge problem with those dongles, but it was not MacroSilicon's fault. At some point most of the sellers started offering a more expensive "USB 3.0" variant reportedly capable of capturing 1080p at 60fps... which of course was a scam, since the MS2109 is 2.0 only (literally the only difference in these cards was the connector being blue, they didn't even have 3.0 pins). Many YouTubers, not knowing about this, kept recommending people to get the 3.0 version, which resulted in these cards getting a negative reputation for being "okay but unreliable".
This project is basically what those fake cards should have been.
[1] https://www.naut.ca/blog/2020/07/09/cheap-hdmi-capture-card-...
I enjoy Phil's Lab on YouTube which seems a pretty good resource, but I still think it would be naïve of me to jump in and expect to be able to design something that works.
E.g. I couldn't find a USB-C SATA adaptor that used PD to power the disk. Even the USB3 ones will do a 2.5" disk, but all of them, even if USBC, require a separate power cable for hungrier disks. I thought that was silly, and ought to be relatively easy to make.
Is there a good book for taking (digital) electronics beyond basics (i.e./and that isn't through a lens of Arduino or ESP or whatever) as a hobby? Protocols & design/layout for higher speeds is I suppose where I'm most lacking.
My background: EE but professionally only CS. (Even at university ended up choosing more CS-y/information-theoretic-y courses than electronics tbh.) Hobby electronics (off & on I suppose) since as long ago as I can remember, but haven't designed a PCB since high school. Most recently (a year or so ago) breadboarded a USB serial Ethernet bridge for my Prusa Mini.
The colorlight 5a-75b together with Litex is a great way to get started for cheap.
If you want something even more basic, https://github.com/kingyoPiyo/Pico-10BASE-T is very simple.
Layout for most consumer standards is pretty lax, almost anything will probably work.
Would this even be possible? I assume some devices can do PD both ways (for charging and as a source). But if that’s even possible, I’d imagine it to be rare. I’d love to know the case from someone who knows more.
The problem is that not many USB-C data ports do PD, and even when they do, they may not necessarily provide the voltage required by such disk.
And more importantly, what do available chips support? How easy is it to get chips that support PD + data?
This isn't my area of expertise, so I was hoping someone would be able to say -- Yes, it's possible, I do this all the time. Or -- it's theoretically possible, but not widely supported, so no one does it.
Two of the USB-C ports of my Dell XPS 13 9380 provide 5A/3A over PD, and the third one provides 5A/1.5A. All of them can negotiate both sink and source PD contracts.
If your laptop can be charged via USB-C port and you can attach peripherals to the same port, it's almost certain that it can negotiate a source PD contract as well. That doesn't automatically mean you'll get more than 5V though, so such PD port may still be useless for powering a disk drive enclosure without additional voltage regulation.
Many PD controllers support this for 'sourcing' (5V/1.5A or 5V/3A) natively, since it's a common use case for laptops.
Your first designs may or may not pass a radiated emissions test, and it may or may not work reliably if you want it to fly through the Van Allen belts or in an industrial panel full of VFDs, and you might want to aim for last year's implementation rather than the bleeding edge. While it can be made complicated if you want to truly and thoroughly understand it, just following basic rules of thumb can go a long, long way.
At some point you're already applying all those rules of thumb, but how do you then actually measure what works and what doesn't so that you can improve beyond that?
It seems it is difficult to find resources teaching that, and also the equipment needed becomes very specialized and expensive fast.
But after 10 years in the field, I've sadly forgotten most of that and learned pragmatism instead.
(Benson Leung is probably having a bad dream right now.)
They go into problems of high speed circuit design in general, and the high end gear and insane debugging skills needed to do so!
See their Twitter, or Spotify (Oxide and Friends) - eg "tales from the bring up lab".
https://g13g.blog/2021/03/10/open-source-ambilight-leds-on-a...
https://github.com/hyperion-project/hyperion.ng