Easy-SDR Gets Updates

Back in 2018, we covered [Igor’s] Easy-SDR project that aimed to provide open hardware extensions for the chap RTL-SDR receivers. If you haven’t been there for a while, it’s worth a look as there have been many recent updates. According to the author’s Reddit post:

  1. Most of the devices are now prepared for installation in a metal case measuring 80 x 50 x 20 millimeters.
  2. There’s a completely redesigned LNA design. Now, Bias Tee powered amplifiers are housed in a 50 x 25 x 25mm metal case and have N-type connectors.
  3. There’s an added amplifier based on the PGA-103 microcircuit.
  4. Added is the ability to install filters in final amplifiers (a separate printed circuit board, depending on the filter used).
  5. A new device – SPDT antenna switch for receiving antennas.
  6. The upconverter has been redesigned. Added intermediate buffer stage between the crystal generator and mixer.
  7. RF lines in all devices were recalculated to correspond to the characteristic wave impedance of 50 Ohm.
  8. Reduced size of PI attenuator PCB.

There is an emphasis on ease of assembly, so the projects generally have a gerber file and can use through hole or surface mount parts. They are also available live on EasyEDA if you want to make changes. Some of the designs, like the new upconverter, are SMD only, but for some devices these days that’s your only choice.

We were impressed with the instructions included with some of the projects. It should be very possible to duplicate these projects with just a little effort. If you missed our first pass at [Igor’s] great repo, you can still catch up. Since he uses EasyEDA, you might want to read our experience with that, too.

source https://hackaday.com/2020/10/30/easy-sdr-gets-updates/

Cryptic Calendar Makes For A Useful Wall Ornament

Hackers love a good clock build, but its longer term cousin, the calendar, is more seldom seen in the wild. Regardless, they can be just as useful and elegant a project, as this cryptic design from [Wolfspaw] demonstrates.

The project consists of a series of rotating wheels, displaying a series of arcane symbols. When the markings on the wheel align correctly with the viewing window, they display the date, month, and day of the week, respectively. The wheels themselves are fitted with 3D printed gear rings, which are turned by stepper motors under the control of an Arduino Nano. Hall effect sensors and magnets are used to keep everything appropriately aligned, while a DS3231 real time clock handles timekeeping duties.

It’s a tidy build, and we think the cryptic design adds a little mystery, making this an excellent conversation piece. The build is actually a remix of a project we’ve featured before, scaled and given a unique twist to suit [Wolfspaw]’s own personal aesthetic. Video after the break.

source https://hackaday.com/2020/10/30/cryptic-calendar-makes-for-a-useful-wall-ornament/

Adding Remote Control to the Elegoo Mars Pro

Recent price drops put entry level masked stereolithography (MSLA) resin 3D printers at around $200 USD, making them a very compelling tool for makers and hackers. But as you might expect, getting the price this low often involves cutting several corners. One of the ways manufacturers have made their machines so cheap is by simplifying the electronics and paring down the feature set to the absolute minimum.

So it was hardly a surprise for [Luiz Ribeiro] to find that his new Elegoo Mars Pro didn’t offer WiFi connectivity or a remote control interface. You’re supposed to just stick a USB flash drive into the printer and select the object you want to print from its menu system. But that doesn’t mean he couldn’t hack the capability in himself.

Monitoring a print with Mariner.

If this were a traditional 3D printer, he might have installed OctoPrint and been done with it. But resin printers are a very different beast. In the end, [Luiz] had to develop his own remote control software that worked around the unique limitations of the printer’s electronics. His software runs on a Raspberry Pi Zero and uses Linux’s “USB Gadget” system to make it appear as a flash drive when plugged into the USB port on the Elegoo Mars Pro.

This allows sending object files to the printer over the network, but there was a missing piece to the puzzle. [Luiz] still needed to manually go over to the printer and select which file he wanted to load from the menu. Until he realized there was an exposed serial port on control board that allowed him to pass commands to the printer. Between the serial connection and faux USB Mass Storage device, his mariner software has full control over the Mars Pro and is able to trigger and monitor print jobs remotely.

It might not offer quite the flexibility of adding OctoPrint to your FDM 3D printer, but it’s certainly a start.

source https://hackaday.com/2020/10/30/adding-remote-control-to-the-elegoo-mars-pro/

Hackaday Podcast 091: Louisville Exploder, Generating Japanese Joinery, Relay Retrocomputer Rally, and Chop the Robopup

Hackaday editors Mike Szczys and Elliot Williams dig through the greatest hacks that ought not be missed this week. There’s a wild one that flexes engineering skills instead of muscles to beat the homerun distance record with an explosively charged bat. A more elegant use of those engineering chops is shown in a CNC software tool that produces intricate wood joinery without needing an overly fancy machine to fabricate it. If your flesh and blood pets aren’t keeping up with your interests, there’s a new robot dog on the scene that far outperforms its constituent parts which are 3D-printed and of the Pi and Arduino varieties. And just when you thought you’d seen all the craziest retrocomputers, here’s an electromechanical relay based machine that took six years to build (although there’s so much going on here that it should have taken sixteen).

Take a look at the links below if you want to follow along, and as always, tell us what you think about this episode in the comments!

Direct download (~60 MB)

Places to follow Hackaday podcasts:

Episode 091 Show Notes:

New This Week:

Interesting Hacks of the Week:

Quick Hacks:

Can’t-Miss Articles:

source https://hackaday.com/2020/10/30/hackaday-podcast-091-louisville-exploder-generating-japanese-joinery-relay-retrocomputer-rally-and-chop-the-robopup/

ESP8266 Does RC Without the Transmitter

While the cost of a hobby-grade remote control transmitter has dropped significantly over the last decade or so, even the basic models are still relatively expensive. It’s not such a big deal if you only need to get one for personal use, but for a school to outfit a classroom’s worth of students their own radios, they’d need to have a serious STEM budget.

Which is why [Miharix], himself an educator with a decade of experience, developed a project that leverages the ESP8266 to create affordable RC vehicles that can be controlled with a smartphone’s web browser. There’s a bit of irony at play since the smartphones are more expensive than the RC transmitters would have been; but with more and more school-age kids having their own mobile devices, it takes the cost burden off of the educators. Depending on the age of the students, the teacher would only need to keep a couple of burner phones on hand for student that doesn’t have a device of their own.

A custom PCB makes connections easier for students.

In its fully realized form, the project uses an open hardware board that allows standard RC hobby servos to be connected to the GPIO pins of a ESP-12E module. But if you don’t want to go through the trouble of building the custom hardware, you could put something similar together with an ESP development board. From there it’s just a matter of installing the firmware, which starts up a server providing a touch-based controller interface that’s perfect for a smartphone’s screen.

Since the ESP8266 pops up as an Access Point that client devices can connect to, you don’t even need to have an existing network in place. Or Internet access, for that matter. [Miharix] says that in tests, the range between a common smartphone and the ESP8266 is approximately 85 meters (260 feet), which should be more than enough to get the job done.

In the videos after the break you can see this system being used with an RC car and boat, though the only limit to what you could control with this project is your own imagination.

source https://hackaday.com/2020/10/30/esp8266-does-rc-without-the-transmitter/

ESP8266 Does RC Without the Transmitter

While the cost of a hobby-grade remote control transmitter has dropped significantly over the last decade or so, even the basic models are still relatively expensive. It’s not such a big deal if you only need to get one for personal use, but for a school to outfit a classroom’s worth of students their own radios, they’d need to have a serious STEM budget.

Which is why [Miharix], himself an educator with a decade of experience, developed a project that leverages the ESP8266 to create affordable RC vehicles that can be controlled with a smartphone’s web browser. There’s a bit of irony at play since the smartphones are more expensive than the RC transmitters would have been; but with more and more school-age kids having their own mobile devices, it takes the cost burden off of the educators. Depending on the age of the students, the teacher would only need to keep a couple of burner phones on hand for student that doesn’t have a device of their own.

A custom PCB makes connections easier for students.

In its fully realized form, the project uses an open hardware board that allows standard RC hobby servos to be connected to the GPIO pins of a ESP-12E module. But if you don’t want to go through the trouble of building the custom hardware, you could put something similar together with an ESP development board. From there it’s just a matter of installing the firmware, which starts up a server providing a touch-based controller interface that’s perfect for a smartphone’s screen.

Since the ESP8266 pops up as an Access Point that client devices can connect to, you don’t even need to have an existing network in place. Or Internet access, for that matter. [Miharix] says that in tests, the range between a common smartphone and the ESP8266 is approximately 85 meters (260 feet), which should be more than enough to get the job done.

In the videos after the break you can see this system being used with an RC car and boat, though the only limit to what you could control with this project is your own imagination.

source https://hackaday.com/2020/10/30/esp8266-does-rc-without-the-transmitter/

ESP8266 Does RC Without the Transmitter

While the cost of a hobby-grade remote control transmitter has dropped significantly over the last decade or so, even the basic models are still relatively expensive. It’s not such a big deal if you only need to get one for personal use, but for a school to outfit a classroom’s worth of students their own radios, they’d need to have a serious STEM budget.

Which is why [Miharix], himself an educator with a decade of experience, developed a project that leverages the ESP8266 to create affordable RC vehicles that can be controlled with a smartphone’s web browser. There’s a bit of irony at play since the smartphones are more expensive than the RC transmitters would have been; but with more and more school-age kids having their own mobile devices, it takes the cost burden off of the educators. Depending on the age of the students, the teacher would only need to keep a couple of burner phones on hand for student that doesn’t have a device of their own.

A custom PCB makes connections easier for students.

In its fully realized form, the project uses an open hardware board that allows standard RC hobby servos to be connected to the GPIO pins of a ESP-12E module. But if you don’t want to go through the trouble of building the custom hardware, you could put something similar together with an ESP development board. From there it’s just a matter of installing the firmware, which starts up a server providing a touch-based controller interface that’s perfect for a smartphone’s screen.

Since the ESP8266 pops up as an Access Point that client devices can connect to, you don’t even need to have an existing network in place. Or Internet access, for that matter. [Miharix] says that in tests, the range between a common smartphone and the ESP8266 is approximately 85 meters (260 feet), which should be more than enough to get the job done.

In the videos after the break you can see this system being used with an RC car and boat, though the only limit to what you could control with this project is your own imagination.

source https://hackaday.com/2020/10/30/esp8266-does-rc-without-the-transmitter/

This Week in Security: Discord, Chromium, and WordPress Forced Updates

[Masato Kinugawa] found a series of bugs that, when strung together, allowed remote code execution in the Discord desktop app. Discord’s desktop application is an Electron powered app, meaning it’s a web page rendered on a bundled light-weight browser. Building your desktop apps on JavaScript certainly makes life easier for developers, but it also means that you inherit all the problems from running a browser and JS. There’s a joke in there about finally achieving full-stack JavaScript.

The big security problem with Electron is that a simple Cross Site Scripting (XSS) bug is suddenly running in the context of the desktop, instead of the browser. Yes, there is a sandboxing option, but that has to be manually enabled.

And that brings us to the first bug. Neither the sandbox nor the contextIsolation options were set, and so both defaulted to false. What does this setting allow an attacker to do? Because the front-end and back-end JavaScript runs in the same context, it’s possible for an XSS attack to override JS functions. If those functions are then called by the back-end, they have full access to Node.js functions, including exec(), at which point the escape is complete.

Now that we know how to escape Electron’s web browser, what can we use for an XSS attack? The answer is automatic iframe embeds. For an example, just take a look at the exploit demo below. On the back-end, all I have to do is paste in the YouTube link, and the WordPress editor does its magic, automatically embedding the video in an iframe. Discord does the same thing for a handful of different services, one being Sketchfab.

This brings us to vulnerability #2. Sketchfab embeds have an XSS vulnerability. A specially crafted sketchfab file can run some JS whenever a user interacts with the embedded player, which can be shoehorned into discord. We’re almost there, but there is still a problem remaining. This code is running in the context of an iframe, not the primary thread, so we still can’t override functions for a full escape. To actually get a full RCE, we need to trigger a navigation to a malicious URL in the primary pageview, and not just the iframe. There’s already code to prevent an iframe from redirecting the top page, so this RCE is a bust, right?

Enter bug #3. If the top page and the iframe are on different domains, the code preventing navigation never fires. In this case, JavaScript running in an iframe can redirect the top page to a malicious site, which can then override core JS functions, leading to a full escape to RCE.

It’s a very clever chaining of vulnerabilities, from the Discord app, to an XSS in Sketchfab, to a bug within Electron itself. While this particular example required interacting with the embedded iframe, it’s quite possible that another vulnerable service has an XSS bug that doesn’t require interaction. In any case, if you use Discord on the desktop, make sure the app is up to date. And then, enjoy the demo of the attack, embedded below.

Chromium Freetype Overflow

Chromium 86 has a fix for a particularly nasty bug. Tracked as CVE-2020-15999, this is a bug in how FreeType fonts are rendered. Now that Microsoft has switched to Edgium (Chromium powered Edge), we get two-for-one deals on Chromium vulnerabilities. This bug is interesting because it’s reportedly being actively exploited already. Google has marked the bug public, so we can take a closer look at exactly what happened.

The problem is in the FreeType library, regarding how fonts are handled when they contain embedded PNGs. To put it simply, the PNG width and height are stored in the font as 32-bit values, but those values are truncated to 16-bit before the buffer is allocated. After this, the PNG is copied to the buffer, but using the non-truncated values. A check is then performed to make sure the copy didn’t overflow, but unhelpfully, this was checked *after* the copy had taken place. The bug includes a test case, so feel free to go check your devices using that code. It’s not clear how long this bug has existed, but it’s possible it also affects Android’s System WebView, which is much slower to update.

Step-by-step of Chrome Exploit

[Man Yue Mo] recently published a detailed report on a Use-After-Free Chrome bug he discovered back in March, tracked as CVE-2020-6449. What makes this one worth looking at is the detailed account he gives us of the process of developing a working exploit from the bug. The whole account is a masterclass in abusing JavaScript to manipulate the state of the underlying engine. As a bonus, he gives us a link to the PoC exploit code to look at, too.

FBI Warning

The FBI, along with CISA and HHS, has issued a warning (PDF) about an ongoing redoubling of ransomware attacks against US hospitals and other healthcare providers. This attack is using the Trickbot malware and the Ryuk ransomware. They also note the use of DNS tunneling for data exfiltration, and specifically mention Point of Sale systems as a target.

The mitigation steps are particularly interesting in trying to read between the lines here. Before we look too deeply, I have to call out an outdated piece of advice: “Regularly change passwords”. This has been the bane of many users and administrators, and leads to weaker security, not stronger. With that out of the way, let’s look at the other recommendations.

A few recommendations are boiler-plate, like two-factor authentication, install security updates, have backups, etc. I was surprised to see the recommendation to allow local administration, in order to get things working again. What might be the most interesting is the recommendation to take a hard look at any RDP services that are running. Does this mean that some healthcare PoS system is running an out-of-date Windows, with a vulnerable RDP service open to the network by default, and it’s suddenly being targeted? Maybe. I’ve learned not to put too much stock in these advisories, unless actual details are given, and this particular example is quite light on details.

Loginizer’s SQL Injection

The popular Loginizer WordPress plugin is intended to protect your site’s login page from attack. It can add two-factor authentication, CAPTCHAs for repeated login attempts, and even detect brute-force attempts and blacklist the offending IP. That last one is where the problem lies. Incoming login attempts are logged to a SQL database, and that logging wasn’t properly sanitized, nor were prepared statements used. Because of this, the login page was subject to a very simple SQL injection attack. The Lesson? Sanitize your inputs, and use prepared statements! The latest update fixes this, as well as a separate but similar security issue.

What makes this bug novel is that WordPress found it a big enough problem to break the glass and push the big red button labeled “Force Update”. I didn’t know the folks at WordPress had a button that did that, but for particularly bad bugs like this one, it’s a useful capability. A few users complained that this update was installed even though they had auto-updates disabled. It’s a fine line to walk here, but it seems like WordPress should make it clear in the settings that this feature exists, and include a way to opt-out of forced updates like this one.

source https://hackaday.com/2020/10/30/this-week-in-security-discord-chromium-and-wordpress-forced-updates/

Color E-Ink Display Photo Frame Pranks [Mom]

As a general rule, it’s not nice to prank your mother. Moms have a way of exacting subtle revenge, generally in the form of guilt. That’s not to say it might not be worth the effort, especially when the prank is actually wrapped in a nice gesture, like this ever-changing e-paper family photo frame.

The idea the [CNLohr] had was made possible by a new generation of multicolor e-paper displays by Waveshare. The display [Charles] chose was a generous 5.65″ unit with a total of seven colors. A little hacking revealed an eighth color was possible, adding a little more depth to the images. The pictures need a little pre-processing first, of course — dithering to accommodate the limited palette — but look surprisingly good on the display. They have a sort of stylized look, as if they were printed on a textured paper with muted inks.

The prank idea was simple — present [Mrs. Lohr] with a cherished family photo to display, only to find out that it had changed to another photo overnight. The gaslighting attempt required a bit more hacking, including some neat tricks to keep the power consumption very low. It was also a bit of a squeeze to get it into a frame that was slim enough not to arouse suspicion. The video below details some of the challenges involved in this build.

In the end, [Mom] wasn’t tricked, but she still seemed pleased with the final product. These displays seem like they could be a lot of fun — perhaps a version of the very-slow-motion player but for color movies would be doable.

source https://hackaday.com/2020/10/30/color-e-ink-display-photo-frame-pranks-mom/

Crowd Funded Jumping Cubes

The Japan Aerospace Exploration Agency (JAXA) recently contributed their Int-Ball  technology to a Kickstarter campaign operated by the Japanese electronics manufacturer / distributor Bit Trade One (Japanese site). This technology is based on the Cubli project out of the Swiss Federal Institute of Technology in Zurich (ETH Zurich), which we covered back in 2013. The Cubli-based technology has been appearing in various projects since then, including the Nonlinear Mechatronic Cube in 2016.  Alas, the current JAXA-based “3-Axis Attitude Control Module” project doesn’t have a catchy name — yet.

One interesting application of these jumping cubes, presumably how JAXA got involved with these devices, is a floating video camera that was put to use on board the International Space Station (ISS) in 2017.  The version being offered by the Kickstarter campaign doesn’t include the cameras, and you will need to provide your own a gravity-free environment to duplicate that application.  Instead, they seem to be marketing this for educational uses.  You’d better dig deep in your wallet if you want one — a fully assembled unit requires a pledge of over $5000 ( there is a “some assembly required” kit that can save you about $1000 ).  Most of us won’t be backing this project for that reason alone, but it is nice to see the march of progress of such a cool technology:  from inception to space applications to becoming available to the general public.  Thanks to [Lincoln Uehara] for sending in this tip.

source https://hackaday.com/2020/10/30/crowd-funded-jumping-cubes/

N64 Power Adapter Works Around The World

Modern electronics such as phone and laptop chargers are pretty versatile no matter where you find yourself in the world. Capable of running off anything from 100-250V, all you need is a socket adaptor and you’re good to go. Video game consoles of the 1990s weren’t so flexible however. [MattKC] was tired of messing around with step down transformers to run his US market N64, and decided to rectify this, building a universal adapter to run the console instead.

It’s a proper hacked build, assembled out of a jumble of old parts. An broken N64 power adapter was harvested for its case and unique DC plug, which carries 12V and 3.3V to the console. Few compact power supplies exist delivering this pair of voltages, so [MattKC] got creative. An old router was sourced for its 12V 2A supply, and was combined with a 3.3V buck converter to supply both rails. With some creative bodging and plenty of mounting tape, the supplies were crammed inside the original case and wired up to the original jack and a figure 8 cable, allowing easy socket changes in different countries without the use of ugly adapters.

While few of us routinely travel with 25 year old Nintendo consoles, for those that do, the convenience of a single universal supply can’t be overstated. Fitting a step-down transformer into carry-on luggage simply isn’t practical, after all. We’ve featured similar hacks as far back as 2006, or more recently, a project seeking to rebuild a new PSU for the venerable Amiga 500. Video after the break.

source https://hackaday.com/2020/10/29/n64-power-adapter-works-around-the-world/

A Look Behind the “Big Boards” at Mission Control in the Golden Age of NASA

Certified space-nerd and all-around retro-tech guru [Fran Blanche] has just outdone herself with a comprehensive look at how NASA ran the Mission Control “Big Boards” that provided flight data for controllers for Apollo and for the next 20 years of manned spaceflight.

We’ve got to admit, [Fran] surprised us with this one. We had always assumed that the graphs and plots displayed in front of the rows of mint-green consoles and their skinny-tie wearing engineers were video projections using eidophor projectors. And to be sure, an eidophor, the tech of which [Jenny] profiled a while back, was used on one of the screens to feed video into Mission Control, either live from the Moon or from coverage of the launch and recovery operations. But even a cursory glance at the other screens in front of “The Pit” shows projections of a crispness and clarity that was far beyond what 1960s video could achieve.

Instead, plots and diagrams were projected into the rear of the massive screens using a completely electromechanical system. Glass and metal stencils were used to project the icons, maps, and grids, building up images layer by layer. Colors for each layer were obtained by the use of dichroic filters, and icons were physically moved to achieve animations. Graphs and plots were created Etch-a-Sketch style, with a servo-controlled stylus cutting through slides made opaque with a thin layer of metal. The whole thing is wonderfully complex, completely hacky, and a great example of engineering around the limits of technology.

Hats off to [Fran] for digging into this forgotten bit of Space Race tech. Seeing something like this makes the Mission Control centers of today look downright boring by comparison.

source https://hackaday.com/2020/10/29/a-look-behind-the-big-boards-at-mission-control-in-the-golden-age-of-nasa/

Nightmare Robot Only Moves When You Look Away

What could be more terrifying than ghosts, goblins, or clowns? How about a shapeless pile of fright on your bedroom floor that only moves when you’re not looking at it? That’s the idea behind [Sciencish]’s nightmare robot, which is lurking after the break. The Minecraft spider outfit is just a Halloween costume.

In this case, “looking at it” equates to you shining a flashlight on it, trying to figure out what’s under the pile of clothes. But here’s the thing — it never moves when light is shining on it. It quickly figures out the direction of the light source and lies in wait. After you give up and turn out the flashlight, it spins around to where the light was and starts moving in that direction.

The brains of this operation is an Arduino Uno, four light-dependent resistors, and a little bit of trigonometry to find the direction of the light source. The robot itself uses two steppers and printed herringbone gears for locomotion. Its chassis has holes in it that accept filament or wire to make a cage that serves two purposes — it makes the robot into more of an amorphous blob under the clothes, and it helps keep clothes from getting twisted up in the wheels. Check out the demo and build video after the break, because this thing is freaky fast and completely creepy.

While we usually see a candy-dispensing machine or two every Halloween, this year has been more about remote delivery systems. Don’t just leave sandwich bags full of fun size candy bars all over your porch, build a candy cannon or a spooky slide instead.

Via r/duino

source https://hackaday.com/2020/10/29/nightmare-robot-only-moves-when-you-look-away/

A Clock From An Electricity Meter

Electric utilities across the world have been transitioning their meters from the induction analog style with a distinctive spinning disc to digital “smart” meters which aren’t as aesthetically pleasing but do have a lot of benefits for utilities and customers alike. For one, meter readers don’t need to visit each meter every month because they are all networked together and can download usage data remotely. For another, it means a lot of analog meters are now available for projects such as this clock from [Monta].

The analog meters worked by passing any electricity used through a small induction motor which spun at a rate proportional to the amount of energy passing through it. This small motor spun a set of dials via gearing in order to keep track of the energy usage in the home or business. To run the clock, [Monta] connected a stepper motor with a custom transmission to those dials for the clock face because it wasn’t possible to spin the induction motor fast enough to drive the dials. An Arduino controls that stepper motor, but can’t simply drive the system in a linear fashion because it needs to skip a large portion of the “minutes” dials every hour. A similar problem arises for the “hours” dials, but a little bit of extra code solves this problem as well.

Once the actual clock is finished, [Monta] put some finishing touches on it such as backlighting in the glass cover and a second motor to spin the induction motor wheel to make the meter look like it’s running. It’s a well-polished build that makes excellent use of some antique hardware, much like one of his other builds we’ve seen which draws its power from a Stirling engine.

source https://hackaday.com/2020/10/29/a-clock-from-an-electricity-meter/

Massive Battle Bot Needs Equally Chunky Custom-Molded Wheels

We’ve all run into situations where the right part for the job isn’t something that you can just buy off the shelf. In a lot of cases, 3D-printing is the cure for that problem, but sometimes you need to go big with tough parts for a tough job. These custom molded urethane battlebot wheels are a great example of that. (Video, embedded below.)

The robotic warrior in question is “Copperhead”, a heavyweight death-dealer that has competed on the “BattleBots” show on TV. It’s an incredibly stout machine with a ridiculous 50 pound (23 kg) drum of spinning tool-steel on the front to disassemble competitors. Add to that the sheer mass of the bot’s armor plating and running gear, throw in the need to withstand the punishment meted out by equally diabolical weapons, and standard wheels are not going to fly.

As [Robert Cowan] details in the video below, nothing but the sturdiest wheels will do, so the bot builders mold custom wheels with integrated hubs. The four-piece mold was machined out of aluminum to hold the plastic hubs, which were also machined but could easily have been 3D-printed. Polyurethane resin is poured in and adheres to the plastic hub better than we’d have thought it would: enough so to avoid coming apart despite some pretty severe blows. The whole casting process is a good watch, as is the overview of Copperhead’s design. And watching it tear apart “War Hawk” was a treat too.

You may not be building battle bots, but a scaled-down version of this process could be a handy trick to have stored away for someday.

Thanks for the tip, [Zane Atkins].

source https://hackaday.com/2020/10/29/massive-battle-bot-needs-equally-chunky-custom-molded-wheels/

DIY Regular Expressions

In the Star Wars universe, not everyone uses a lightsabe, and those who do wield them had to build them themselves. There’s something to be said about that strategy. Building a car or a radio is a great way to learn how those things work. That’s what [Low Level JavaScript] points out about regular expressions. Sure, a lot of people think they are scary. So why not write your own regular expression parser and engine? Get that under your belt and you’ll probably never fear another regular expression.

Of course, most of us probably won’t do it ourselves, but you can still watch the process in the video below. The code is surprisingly short, but don’t expect all the bells and whistles you might find in Python or even Perl.

In the hands of the skilled, regular expressions are very powerful and offer a quick way to split apart text data. Like a lot of powerful ideas, the basic concept — that of a finite state machine — is really simple. It is the application to real problems that becomes difficult.

If you want a primer on regular expressions that doesn’t require you to write your own tools, we have had a few posts that can help. If you just want some practice, try a crossword puzzle.

source https://hackaday.com/2020/10/29/diy-regular-expressions/

This Z80 Computer Bootstraps Itself

[Plasmode] has created several Z80-compatible board designs, at least four of them using the oddball Z280. The Z280 was a special variant of a Z80 that could bootstrap itself with no external PROM, making it ideal for anyone trying to build a system on a breadboard. According to his post, the cost to build the board is about $35.

Although the 8080 CPU got a lot of glory, it was much harder to use than the Zilog Z80. The Z80 only required a single clock and power supply, so it was much easier to build a system, even on a breadboard. On top of that, the bus wasn’t multiplexed and it could refresh DRAM memory by itself. Maybe that’s why you can still get Z80-derived chips readily. There was one thing, though, you needed an EPROM or some other way to run some initial code to bootstrap your system. Zilog knew this a problem. In those days, you had to use a special tool to burn a PROM and unless it was erasable (and you had the special UV light to erase it), any mistakes cost you a chip.

With the Z280, it was possible to load files via the bootloader to make the device program its own EPROM, as this board does. The bootloader is simple. It loads 256 bytes of memory from the serial port and runs it. The chip has two modes with a 16-bit data bus and 24 address bits. However, it can also operate in a Z80-compatible mode. The chip had many innovative features like a memory management unit and cache, but failed to become a success.

As a CP/M board, though, this should be an easy build. The CPU runs with a 12 MHz bus and has a cool megabyte of memory split between RAM and EPROM. There’s a 44-pin IDE interface and two RC2014 expansion connectors.

While $35 doesn’t seem like much, you can get by with a lot less using a classic Z80. If you don’t mind using an Arduino for support, you can spend as little as $4.

source https://hackaday.com/2020/10/28/this-z80-computer-bootstraps-itself/

Projecting Halloween Peril

Every holiday has a few, dedicated individuals committed to “going all out.” Whether they’re trying to show up the neighbors, love the look, or just want to put a smile on the faces of those passing by; the results are often spectacular. A recent trend in decorations has been away from analog lights and ornaments and towards digital light shows via a projector. [Georgia Clegg] and [Luma Bakery] have written up a fantastic guide detailing the involved process of house projection for those feeling the holiday spirit.

There is more to the effect than simply pointing a projector at a home and running a video clip. The good displays make use of the geometry of the home and the various depths of the walls don’t distort the picture. The house itself is mapped into the image being displayed.

There are generally two approaches to mapping: point of view mapping and neutral/orthographic mapping. The first is just setting the projector in a fixed position and designing the graphics in such a way that they will look correct. The downside is that if there are multiple projectors, each projector will need to be separately designed for and they cannot be moved or adjusted. The second maps the house in an actual 3d sense and figures out how to display the content according to the viewpoint that the projector is currently at. This means you can create one source content and simply export it for the various projectors.

As you can imagine, the second is much more involved and this is where [Georgia Clegg] has stepped in. There’s a whole series that covers creating your house in MeshRoom, cleaning it up in Blender, creating the videos in After Effects, and setting up your projector to keep it running through the season.

We’ve seen other amazing projector mapping displays with lasers here at Hackaday. Now you can make one yourself. Just don’t get bogged down refurbishing your vector projector along the way.
Check out the results they’ve achieved in this highlight reel:

source https://hackaday.com/2020/10/28/projecting-halloween-peril/

PyGame Celebrates 20 Years by Releasing PyGame 2.0

Python is an absolutely fantastic language for tossing bits of data around and gluing different software components together. But eventually you may find yourself looking to make a program with an output a bit more advanced than the print() statement. Once you’ve crossed into the land of graphical Python programming, you’ll quickly find that the PyGame library is often recommended as a great way to start pushing pixels even if you’re not strictly making a game.

Today, the project is celebrating an incredible milestone: 20 years of helping Python developers turn their ideas into reality. Started by [Pete Shinners] in 2000 as a way to interface with Simple DirectMedia Layer (SDL), the project was quickly picked up by the community and morphed into a portable 2D/3D graphics library that lets developers deploy their code on everything from Android phones to desktop computers.

Things haven’t always gone smoothly for the open source library, and for awhile development had stalled out. But the current team has been making great progress, and decided today’s anniversary was the perfect time to officially roll out PyGame 2.0. With more than 3,300 changes committed since the team started working on their 2.0 branch in July of 2018, it’s a bit tough to summarize what’s new. Suffice to say, the library is more capable than ever and is ready to tackle everything from simple 2D art up to 4K GPU-accelerated applications.

Rip and tear in PyGame 2.0

If you haven’t given PyGame a try in awhile, don’t worry. The team has put special effort into making the library as backwards compatible as possible, so if you’ve got an old project kicking around that you haven’t touched in a decade, it should still run against the latest and greatest version. If you’ve never used it before, the team says they’ll soon be releasing new tutorials that show you how to get the most out of this new release.

Whether you’re putting together your own implementation of Conway’s “Game of Life” or creating the graphical front-end for your own Linux distribution, PyGame is a powerful tool to have in your collection. Our sincere congratulations to all PyGame developers, past and present, for making it to this auspicious occasion. We can’t wait to see what the next decade will bring.

[Thanks to deshipu for the tip.]

source https://hackaday.com/2020/10/28/pygame-celebrates-20-years-by-releasing-pygame-2-0/

Making a 3D Printed DSLR Camera Mount Even Better

We’d love to say that all of our projects worked perfectly on the first try, but the average Hackaday reader is a bit too experienced to buy a fib like that. The reality is, DIY projects rarely get everything right out of the gate. It takes some time to identify issues and work out all the kinks. But of course, that’s half the fun.

For a perfect example of this process, check out the latest update on the 3D printed DSLR camera mount that [isaac879] has been working on. When we last checked in with this project over the summer the mount was already impressive, but with the latest improvements and the addition of a whole new axis of movement, this homebrew camera motion system is an extremely compelling project for anyone who wants to take their project videos to the next level.

The new Hall effect sensor mounts are a very nice touch.

Back in June, the mount [isaac879] showed off was only capable of pan and tilt. But as you can see in the video after the break, he’s since mounted that to a track made of 20×40 aluminum extrusion and added another stepper motor. This allows the pan/tilt mount to move itself back and forth on the track to get those slick panning shots that all the cool kids use in their videos nowadays.

But even if you’re not interested in the slider aspect, the core pan/tilt mount has also received a number of refinements over the last few months. Perhaps the most obvious is the switch over to thinner and lighter stepper motors. Reducing mass is always an improvement with a moving system like this, and in the case of the pan motor, the shorter can prevents a potential collision with the camera itself. Obviously the smaller motors are weaker, but [isaac879] considers that a feature; the mini motors will just start skipping steps if things get bound up instead of potentially damaging your expensive camera.

He’s switched to flange bearings to help hold the frame together, improved wire routing, added a mounting point for the electronics, reprinted the pinion gears in a flexible filament to help absorb some vibrations, and switched over to TMC2208 stepper drivers. The new drivers may actually be one of the biggest usability upgrades, as they allow the entire mount to move faster and more accurately. Critically, [isaac879] also reports the new drivers have solved a troublesome vibration issue he was seeing when the camera was moving slowly.

Obviously you can throw together a simple pan and tilt mount with a couple of servos and some zip ties if you only need to use it once or twice, but a project of this caliber would rightfully become a permanent fixture in your workspace. Perfect if you’re looking to up your project photography game.

[Thanks to Steven for the tip.]

source https://hackaday.com/2020/10/28/making-a-3d-printed-dslr-camera-mount-even-better/

Making a 3D Printed DSLR Camera Mount Even Better

We’d love to say that all of our projects worked perfectly on the first try, but the average Hackaday reader is a bit to experienced to buy a fib like that. The reality is, DIY projects rarely get everything right out of the gate. It takes some time to identify issues and work out all the kinks. But of course, that’s half the fun.

For a perfect example of this process, check out the latest update on the 3D printed DSLR camera mount that [isaac879] has been working on. When we last checked in with this project over the summer the mount was already impressive, but with the latest improvements and the addition of a whole new axis of movement, this homebrew camera motion system is an extremely compelling project for anyone who wants to take their project videos to the next level.

The new Hall effect sensor mounts are a very nice touch.

Back in June, the mount [isaac879] showed off was only capable of pan and tilt. But as you can see in the video after the break, he’s since mounted that to a track made of 20×40 aluminum extrusion and added another stepper motor. This allows the pan/tilt mount to move itself back and forth on the track to get those slick panning shots that all the cool kids use in their videos nowadays.

But even if you’re not interested in the slider aspect, the core pan/tilt mount has also received a number of refinements over the last few months. Perhaps the most obvious is the switch over to thinner and lighter stepper motors. Reducing mass is always an improvement with a moving system like this, and in the case of the pan motor, the shorter can prevents a potential collision with the camera itself. Obviously the smaller motors are weaker, but [isaac879] considers that a feature; the mini motors will just start skipping steps if things get bound up instead of potentially damaging your expensive camera.

He’s switched to flange bearings to help hold the frame together, improved wire routing, added a mounting point for the electronics, reprinted the pinion gears in a flexible filament to help absorb some vibrations, and switched over to TMC2208 stepper drivers. The new drivers may actually be one of the biggest usability upgrades, as they allow the entire mount to move faster and more accurately. Critically, [isaac879] also reports the new drivers have solved a troublesome vibration issue he was seeing when the camera was moving slowly.

Obviously you can throw together a simple pan and tilt mount with a couple of servos and some zip ties if you only need to use it once or twice, but a project of this caliber would rightfully become a permanent fixture in your workspace. Perfect if you’re looking to up your project photography game.

[Thanks to Steven for the tip.]

source https://hackaday.com/2020/10/28/making-a-3d-printed-dslr-camera-mount-even-better/

Making a 3D Printed DSLR Camera Mount Even Better

We’d love to say that all of our projects worked perfectly on the first try, but the average Hackaday reader is a bit to experienced to buy a fib like that. The reality is, DIY projects rarely get everything right out of the gate. It takes some time to identify issues and work out all the kinks. But of course, that’s half the fun.

For a perfect example of this process, check out the latest update on the 3D printed DSLR camera mount that [isaac879] has been working on. When we last checked in with this project over the summer the mount was already impressive, but with the latest improvements and the addition of a whole new axis of movement, this homebrew camera motion system is an extremely compelling project for anyone who wants to take their project videos to the next level.

The new Hall effect sensor mounts are a very nice touch.

Back in June, the mount [isaac879] showed off was only capable of pan and tilt. But as you can see in the video after the break, he’s since mounted that to a track made of 20×40 aluminum extrusion and added another stepper motor. This allows the pan/tilt mount to move itself back and forth on the track to get those slick panning shots that all the cool kids use in their videos nowadays.

But even if you’re not interested in the slider aspect, the core pan/tilt mount has also received a number of refinements over the last few months. Perhaps the most obvious is the switch over to thinner and lighter stepper motors. Reducing mass is always an improvement with a moving system like this, and in the case of the pan motor, the shorter can prevents a potential collision with the camera itself. Obviously the smaller motors are weaker, but [isaac879] considers that a feature; the mini motors will just start skipping steps if things get bound up instead of potentially damaging your expensive camera.

He’s switched to flange bearings to help hold the frame together, improved wire routing, added a mounting point for the electronics, reprinted the pinion gears in a flexible filament to help absorb some vibrations, and switched over to TMC2208 stepper drivers. The new drivers may actually be one of the biggest usability upgrades, as they allow the entire mount to move faster and more accurately. Critically, [isaac879] also reports the new drivers have solved a troublesome vibration issue he was seeing when the camera was moving slowly.

Obviously you can throw together a simple pan and tilt mount with a couple of servos and some zip ties if you only need to use it once or twice, but a project of this caliber would rightfully become a permanent fixture in your workspace. Perfect if you’re looking to up your project photography game.

[Thanks to Steven for the tip.]

source https://hackaday.com/2020/10/28/making-a-3d-printed-dslr-camera-mount-even-better/

An Automatic Label Dispenser for Quicker Stickers

If you have any kind of business, chances are it involves stickers at some point in the process. More accurately it involves you peeling the backs off of sticker after sticker, slowly wasting time and working your way toward a repetitive stress injury. Why do that to yourself when you could have a machine do it for you?

That’s exactly the thinking behind [Mr Innovative]’s automatic label dispensing machine. All he has to do is load up the roll of labels, dial in the length of each label, and away the machine goes, advancing and dispensing and taking up the empty paper all at once. In fact, that’s how it works: the take-up reel is on the shaft of a NEMA-17 stepper motor, which gets its instructions from an Arduino Nano and an A4988 motor driver. Our favorite part is the IR sensor located underneath the sticker that’s ready to take — the machine doesn’t feed another until it senses that you’ve taken the previous sticker. We stuck the demo and build video after the break.

Our other favorite thing about this build is that [Mr Innovative] seems to have used the same PCB as his freaky fast bobbin winder.

source https://hackaday.com/2020/10/28/an-automatic-label-dispenser-for-quicker-stickers/

Linux Fu: Troubleshooting Incron

You probably know about cron, a program that lets you schedule programs to run at various times. We’ve also talked about incron, which is very similar but instead of time, it reacts to changes in the file system. If you ever wanted to write a program that, say, detects a change in a file and automatically uploads it to a programmer, backs it up, e-mails it somewhere, or anything else, then incron might be for you. Although we’ve talked about it before, incron has some peculiarities that make it very difficult to debug problems, so I thought I’d share some of the tricks I use when working with incron.

I was thinking about this because I wanted to set up a simple system where I have a single document directory under git control. Changing a markdown file in that folder would generate Word document and PDF equivalents. Conversely, changing a Word document would produce a markdown version.

This is easy to do with pandoc — it speaks many different formats. The trick is running it only on changed files and as soon as they change. The task isn’t that hard, but it does take a bit to debug since it’s a bit nontrivial.

Incron Review

Setting up incron can be a bit of a pain. I’m going to assume you have a way to install it using a package manager like apt and that your system uses systemd to start and stop the service.

There’s more to it than that, though. You’ll need to be named in the /etc/incron.allow file (and not named in /etc/incron.deny). Once you are set up, it is pretty easy to use. Until it isn’t.

Each user has an incrontab. Use: man 5 incrontab to find out about it. To edit it, use this command:

incrontab -e

Each line has three fields and you must use a single tab between each field. The first field is the directory or file to watch, the second field has comma-separated entries to tell incron what kind of changes you are looking for and some other options. The final field is the command to run.

There are some special characters you can use in the command line. $@ gives you the directory name, for example. The $# macro is the file name while $% gives you the event type as a string ($& is a numeric code for the same). If you need a real dollar sign, just double it.

The events are things like IN_CREATE, IN_DELETE, IN_MODIFY, and many others. You can use any number of them together, just use commas between them. I’ll have more to say about that later. There are also some options like IN_DONT_FOLLOW which stops symbolic link dereferencing. You can also set recursive=false to stop monitoring subdirectories and loopable=true which is supposed to stop a common problem but doesn’t always.

You’ll see documentation on the internet that is sometimes out of date. The current development is on GitHub, but the main developer stopped back in 2012 and there was a two-year gap before someone picked it up for bug fixes. Sometimes it pays to read the source code of the version you have to understand exactly what’s going on.

What’s Wrong With It?

The incron service suffers from an identity crisis. Both by function and name, it must be similar to cron, right? Superficially, that’s true, but the details are quite a bit different. For one thing, older versions of incron don’t allow comments in the table. So you might think you’ve commented something out, but you haven’t really. On top of that, it is very difficult to get the output from your commands or even decent status. Not impossible, though, just difficult. Recent versions do allow comments, but it was a long time coming, and your version may or may not be up to date.

The other thing that is frequently a problem is that any action you take in your program that triggers a file system change might put you in an endless loop. You would think incron would figure this out and do something. Instead, your one line in your private incrontab can crash the entire daemon.

To further compound things, many programs do things you don’t expect that break some of the events. You might think, for example, that if you want to know when a file changes you should monitor IN_MODIFY. Makes sense. But most editors don’t work that way. If you edit the file, it will sometimes work on a copy of the file in /tmp and then the save operation is really a move. Sometimes programs with similar functions will have different event flows. For example, scp and rsync handle files differently and catching when a new file appears will require different handling depending on which program put it there.

The First Tip: Log as You Work on Commands

So that leads to the first tip. Write a temporary rule using the IN_ALL_EVENTS keyword and use a little shell script to just log what happens when you do thinks you think will happen to the file. You might find the results surprising and it is better to understand the event flow for your use case before you start writing real scripts.

Suppose you have a script called echoarg.sh:

#!/bin/bash
fn="$1"
shift
echo "$@" >>"$fn"

Just a quick and dirty script, but you can use it with incron:

/home/user/tmp/itest IN_ALL_EVENTS /bin/bash echoarg.sh /home/user/tmp/echoarg.log $% - $@/$#

The file names ought to have quotes, of course, but since we are just printing them out, it doesn’t matter here. One thing to note: some installations will not allow incron to write to places like /tmp or even monitor files there. You are better off sticking to a directory you know you own (in this case /home/user/tmp). Here’s the result of running touch foo in the ~/tmp/itest directory:


IN_ATTRIB -  /home/user/tmp/itest/foo
IN_CREATE - /home/user/tmp/itest/foo
IN_OPEN - /home/user/tmp/itest/foo
IN_CLOSE_WRITE - /home/user/tmp/itest/foo

More Things to Worry About

Each distribution packages things a bit differently, so you may have to read some documentation. For example, on Debian-based systems, what little it does get logged by incron is written to the system log. But on some other common distributions, it reuses the cron log file.

The program is very finicky about spaces and tabs, too. So a stray space between the second and third fields will mess things up. So will a tab after the program name, the shell will take the tab and the next token as part of the program name.

Speaking of the shell, incron is very peculiar about finding shells and setting environments. Your version may vary, but the safest thing to do is assume you will need a path to everything and an explicit shell in the incrontab. If you need special things in the PATH or other environment configuration, do it in the script. Even if you are running a binary, it pays to write a little wrapper so you can set everything up the way you want. At the very least, when you run your test, dump the runtime environment out to a temporary log file so you don’t find out the hard way that you are missing a lot of your expected environment.

Using a command like $(date) is doomed because incron will eat the dollar sign. If you feel lucky, try using $$(date).

The Big Event

After you understand the events you want to process, you need to write your script and test it as much as you can without using incron. In my case, I wrote autopandoc with the idea that I’d add the PDF functions later:


#!/bin/bash
if [ -z "$1" ]
then
     exit 1
fi
if [ ! -f "$1" ]
then
     exit 2
fi
dir=$(dirname "$1")
ffilename=$(basename -- "$1")
ext="${ffilename##*.}"
filename="${ffilename%.*}"

case "$ext" in
doc*) newext="md"
;;
md) newext="docx"
;;

*) exit 3
esac

if [ ! -f "$dir/generated" ]
then
    mkdir "$dir/generated"
fi
exec pandoc "$1" -o "$dir/generated/$filename.$newext"

This is simple to run from a command line with fake directory, file, and event arguments and make sure the logic does what you want. Trust me, that will be much easier than debugging during incron events.

My first attempt didn’t work well at all and there was very little explanation. By watching the logs, I could see that the file events were happening, but there was no evidence that my scripts — no matter how simple — were running. Turns out, adding an explicit /bin/bash to the table made everything work.

However, getting incron to stop retriggering if I wrote back to the same directory proved to be challenging. I wound up making a subdirectory which would trigger a change that would then make another subdirectory, triggering another change. Eventually, incron would die. Not just a worker thread for my user. Incron would die for all users. I suppose you could change systemd to relaunch it, but that isn’t really a solution.

There are a few options to inhibit incron from reacting multiple times to the same file, but making a new file still causes events and, honestly, if it didn’t that would be another problem if you were trying to handle multiple users. I wound up punting, but first, let’s see how you can peek inside of what’s happening during an incron run.

It’s Log!

As I mentioned, the log file can show up in a few different places. KSystemLog is handy if you use KDE since it can filter and show you events as they happen. You can also use tail -f, of course, but you might need a grep to cut down on the noise.

If you use systemd, you can try something like this:

journalctl -f -u incron.service

This acts like a tail -f for the incron log file. Watching incron repeatedly trigger events on /my_dir/subdir/subdir/subdir…. will tell you a lot about what’s going on in your script.

Other Tips: Run the Daemon Yourself, Use strace, and Max Your Watches

You can stop the incron daemon using your choice of methods (e.g., systemctl stop incron) and then run incrond yourself with the -n option. That shows you what the program is doing. Be sure to run it as root.

Another thing that makes possible is using strace to run the program. This will reveal all the system calls the program makes, so if you are wondering what files it opens and the results of those opens, that’s the way to do it:

sudo strace incrond -n

The -n option makes the program stay in the foreground. Just remember to kill it when you are done and start the service again. Of course, if you are on a machine you share with other people, this is probably a pretty rude idea.

If you do start making use of incron, you may find you run out of file system watches. If you do, try:

sysctl fs.inotify.max_user_watches

You can temporarily change the number allowed by using

sysctl -w fs.inotify.max_user_watches=1000000

Make it permanent by editing /etc/sysctl.conf or add a file to /etc/sysctl.d.

Does it Work?

Once you do get things working, it works well. For production, though, it worries me that one errant script can crash the whole service. There are alternatives. If you don’t mind systemd, there are path units. There are several possible alternatives on GitHub, although none seem recently maintained.

Like most Linux tools, sometimes this is the right choice, and sometimes you’ll want to use something else. But it still pays to understand all the tools you can have in your box.

source https://hackaday.com/2020/10/28/linux-fu-troubleshooting-incron/

The 10,000 Pixel Per Inch Display is Now Possible

A good smartphone now will have about 500 pixels per inch (PPI) on its screen. Even the best phones we could find clock in at just over 800 PPI. But Stanford researchers have a way to make displays with more than 10,000 pixels per inch using technology borrowed from solar panel research.

Of course, that might be overkill on a six-inch phone screen, but for larger displays and close up displays like those used for virtual reality, it could be a game-changer. Your brain is good at editing it out, but in a typical VR headset, you can easily see the pixels from the display even at the highest PPI resolutions available. Worse, you can see the gaps between pixels which give a screen door-like effect. But with a density of 10,000 PPI it would be very difficult to see individual pixels, assuming you can drive that many dots.

Working with Samsung, the team added an extra layer to the bottom of a conventional OLED screen. The new layer — an optical metasurface — has very tiny corrugated mirrors that reflect white light into red, green, and blue components allowing the high density of pixels. A normal OLED panel uses white OLEDs also, but uses a filter to create the different pixel colors.

If you read the Standford paper, you’ll learn about Fabry-Pérot cavities and the Purcell effect. We are sure if you spend all day thinking about OLED displays, this is stuff that makes sense to you, but we had to look up quite a few things on Wikipedia.

While this is not in production, the team did create a proof-of-concept device not only had dense pixel packing, but also high color purity and twice the efficiency of a conventional display. Samsung is investigating scaling the technique to production.

We know you can make OLEDs at home, but probably not at that density. Of course, for serious organic lighting, why not consider a pickle?

source https://hackaday.com/2020/10/28/the-10000-pixel-per-inch-display-is-now-possible/