My goal is to power any USB device via the Joulescope (the ‘u’ in uUSB stands for “universal” ). So you can hook up a 5V power supply to the screw terminal and then plug your device into the Micro-AB port. Or supply power via the USB-B port, and then connect your device to the USB-C output port. And so on.
I decided to wire D+ and D- everywhere too, which wont help your signal integrity much, but should be fine for USB 2 (HS and FS). So maybe “universal” is over-stating just a little, because this is definitely not a USB-3 compatible solution, but it would certainly cover all USB use cases in my experience.
I’ll prototype this shortly, but keen to hear - what would you change at this point? Do you think it would be useful as is?
Hi @hraftery - Great to hear that you are creating a JS220 front panel! This board definitely has all the USBs
As you noted, signal integrity may be an issue. 10 MHz full-speed should be fine, but high-speed is fast enough that you need to consider the issue. 480 MHz in FR4 has a wavelength of about 30 cm. You probably want good signal integrity up to at least the 3th harmonic. 1/4 wavelength of the is then ~2.5 cm. The 1/4 wavelength of the 5th harmonic is only ~1.5 cm
If you want to communicate with a host and also provide power separately through the screw terminals, you need a way to provide downstream VBUS from either the USB connector or the screw terminals. A jumper or switch can do this.
In 2024, do you really need any other connector than USB-C? For upstream, it’s either a USB-A or USB-C port. Downstream is USB-B (full, mini, micro) or USB-C. You can just buy the right cables to adapt from USB-C to whatever else. For what it’s worth, the only reason that the official JS220 USB front panel is USB-B and USB-A is that USB-C means different things to different people, particularly superspeed (USB 3+) and power delivery (PD).
Also see Alvaro’s USB-C JS220 front panel design here:
Oh it’s definitely considered. It’s a controlled impedance board and the traces are routed as a differential pair with the right impedance (well, as right as a typical impedance calculator can achieve!). But it’s a very convoluted path to pick up all the pins and route around the various connectors. USB-C is of course the worst, with its notoriously unroutable D-/D+ pins. So there’s lots of compromises to make it work. I’m very interested to see what the real-world result is and whether I can make improvements. You
Oh yeah, I see what you mean. I can imagine the use case. At the moment you’d have to snip the VBUS wire in the cable to the host… Hmm, at the cost of a switch (on an already-chunky BOM) and a bit of routing, it’s probably a worthwhile feature to add. Thanks!
Heh, for me, definitely! Thankfully still more devices come across my desk that are USB-A and micro (mostly industrial/scientific), than C (mostly consumer). But that’s just the device side - it did occur to me that the ports on the front panel are a little arbitrary. Like you say - just buy the (form-factor transforming) cable to suit.
The usage scenario I have in mind is that you have a DUT, and it’s powered by a wall wart, or designed to plug into a host, and it comes with a cable to suit. What’s the easiest way to insert the Joulescope, without invalidating the DUT behaviour characteristics? I think what you’d want to do is plug the DUT’s cable into the front panel, and then just have a short cable to the DUT. Honestly that short cable could just be USB-C to whatever, and I could save a couple of connectors, but I’m not sure if the reduced flexibility would matter or not. I thought it safer to swing with a sledgehammer at first…
Yes, true. USB-C is many things to many people. FWIW, I’m targeting support for USB 2 (LS, FS and hopefully, HS) and USB-PD (the front panel is effectively a “cable” so is largely agnostic to the negotiated voltage/current and will handle up to 12V/3A just fine - beyond that the Joulescope shouldn’t be in the picture!).
Oh I missed that! Thank you, great to see some activity in this space.
Without a dimensioned drawing, it’s hard to tell how much clearance there is around each connection. Some of those ports look like they could be obstructed by others, especially with the varying heights. The size of the housing around the various types of connecters is not standardized, and I’ve had problems in the past with one cable fitting a USB port and another one not. Just make sure you can accommodate everyone. If I were placing these components, I’d probably put the terminal blocks down low (or maybe aligned with the mounting holes) and take each of those two smaller USB connectors and place them horizontally. That would give a lot more clearance
Great idea to make something like this!
Yeah that was definitely a concern. I gave the Micro connectors in particular some extra space because they’re the shortest and as you say the plugs can be chunky. But CAD can be misleading - the proof will be in the prototyping! There’s quite a few constraints on placement, including usability but also with respect to maximising the signal integrity of the data lines. This current layout satisfied the constraints best out of a few I tried, but I’m expecting that prototyping will motivate quite a bit more tweaking. Thank you for your suggestions!
Here’s another view so you can see the heights at work.
Prototypes arrived last week, then I got distracted by those pesky paying clients! Nonetheless, I’ve been putting it through its paces both in test and in practice. Thank you for your interest!
I have to say, I’m really pleased with it! The prototype was intended to be a first shot in the dark to work out all the details. But so far honestly for me, it’s done! It’s quickly become my de facto front panel for both USB devices and non-USB devices.
Enough Room
I dug out the fattest USB-C and Micro-B plugs I could find, and still had no difficulty using each of the ports. No doubt you could find exceptions, but I think its a reasonable tradeoff.
Even the silkscreen is more readable than I was expecting.
Enough Data
Meanwhile I planned some data integrity measurements to see how bad things are, and started with some in-practice measurements. Here are the average read and write speeds from half a dozen trials copying a 100MB file from/to a USB thumb drive, with the panel in circuit (Actual) and out (Baseline), using the worst case USB-A to USB-B signal path.
I find this rather acceptable! The test does not max out the USB HS spec (60MB/s), although few applications do. And there appears to be some variability in read speeds, but I’m not sure they’re any more significant than the typical variability in the real world conditions. So it barely warrants further investigation.
Gripes
The biggest gripe I have as a user is that the screw terminals are difficult to use. They require a PH000 (very small Phillips) driver or similar, do not fit even the smallest ferrules I have, and don’t even accommodate standard multimeter probes very well. All those inconveniences are easily overcome to the point where they become easy to forget in practice. But it is an initial usability gripe.
So for my own purposes I’m satisfied. But this was supposed to be a contribution to the ecosystem, so I wonder if others would find it useful? It would be some effort to release, and it’s a difficult manual assembly job, but if there’s interest I’ll do it.
Congrats @hraftery ! This USB+++ front panel looks great!
If you can spare a few minutes, I recommend adding a README.md and then commiting the project to GitHub. You can use Alvaro’s project as a guide. If it’s not too much trouble to include a PDF schematic and Bill of Materials, those would be helpful to others.
Any particular reason you suggest GitHub? I know it’s the go-to place, but just wondering if I decide to publish elsewhere whether that is a concern for you.
Hi @hraftery - It’s your project, so please distribute it however you would like. I just mentioned the most common way to distribute modern open source projects. I do recommend using a version control system (such as git) with a hosted provider (such as GitHub) over just distributing a ZIP file.