-
Content Count
1,409 -
Joined
-
Last visited
-
Days Won
34
Reputation Activity
-
yyrkoon got a reaction from radcliffkaty1 in Industrial / commercial sensors
By the way, this is the light level sensor we went with: http://www.acuitybrands.com/products/detail/147289/Sensor-Switch/CM-PC-ADC/Photocell-Dimming-Ceiling-Low-Volt
Kind of expensive at ~$140, but when you need it NOW, hehe you usually end up paying through the nose.
Eventually we may end up designing our own sensors, if there is a need . . . Problem is, finding good enclosures for a decent price.
-
yyrkoon got a reaction from Frida in Code::Blocks + mspgcc how-to.
Everything still works fine with the latest version of code::blocks, and the first version of energia on Windows 10 x64 pro. In fact, the launchpad is recognized straight out of the box, without installing drivers. That is, at least for the purpose of flashing binaries to the launchpad.
IN fact I've just flashed three TSSOP-20 parts, using the launchpad using a ZIP socket adapter + 20 pin TSSOP to DIP socket adapter.
-
yyrkoon reacted to admirlk in Is it just me ?
Well, we are in the same boat then, so maybe it is even ones out.
I just started writing my current project, desktop app, for real. I used no documentation in the "breadboard" versions, so I am having to go back to the APIs and relearn what I did. Unfortunately it is all sub-classes, at this point, so I am not sure where I added functionality for one operation, or another. Since I do not remember what order I added stuff in, I do not Know if things that are not working just need other sub-classes fleshed out, or if I am doing something wrong. I just need to remember to go back and document my real code when I figure out what the problem was.
-
yyrkoon reacted to zeke in Implementing an I2C slave device.
Whoops. I forgot that detail. I must be getting old.
So this is I2C over CANBUS then. Sorta.
I have never worked with CANBUS. Can it cover that distance at that speed?
-
yyrkoon reacted to zeke in Implementing an I2C slave device.
My gut instincts tell me that your cable will have to be 50 ohm coaxial to get 100kHz over 300 meters. Only super slow speeds can go long distances i.e.: RS-485.
I would be inclined to use an msp430 on your cape to be the I2C interface master. You could talk to it with the BBB as if it was a slave serial device. That would isolate the BBB from the slow speed pathway. The BBB could just poll the MSP430 for any new data.
-
yyrkoon reacted to zeke in Implementing an I2C slave device.
Just in case I didn't make it clear, the speed of the simulated I2C-over-1Wire ends up being about 15kHz.
It's not fast but it does work over long lengths of cable and that is pretty darn cool.
-
yyrkoon reacted to zeke in Implementing an I2C slave device.
It was a bit of a mind bender for me at first but then I just read the I2C spec and it did not specify that the communication *had* to be at 100kHz.
The way I choose to understand things is that the I2C slave device has a communication state machine inside of it. All I have to do is put in one bit and turn the crank once. Then repeat. Over and over. Then the slave device will just do its job merrily.
-
yyrkoon reacted to admirlk in Is it just me ?
I know this is an older post, but it struck a "pet peeve" nerve.
I recently went back to school, I had to learn how to use a calculator because they were not allowed in math class when I was in high school, and was surprised at how often people did not bother to even copy things by hand. When we had peer reviews, or otherwise were able to see each other's code, there was always at least one that was a direct c&p of code that did not even work. Had they copied it by hand, and read it in the process, they would have realized that it did not work. Keep in mind, these are simple school problems that have numerous examples on the internet. I have also seen, many times, where the code seems to have been intentionally written wrong, but someone who actually reads it will be able to fix it easily.
When I have problems with code, I am often reluctant to ask questions because I do not want someone to just write it for me. I appreciate answers that simply point me in the right direction. On the other hand, with electronics, I tend to look for a more definitive answer. This is usually something like what size cap should I use, because I am trying to copy something that did not give the value, and I am just trying to get it to work, without ordering "one of each" or frying something.
Personally, I appreciate everyone who tries to help me.
-
yyrkoon reacted to zeke in CC1350STKUS
If they can be setup as a point-to-point link then there shouldn't be any problem setting up a data link between end points.
Carefully selected and aligned Yagi antennas ought to overcome foliage loss.
-
yyrkoon got a reaction from bluehash in Beaglebone enclosed development system.
@NurseBob So you've show interest in this through another post. Instead of polluting that post, I figured I would respond here. Where to start. . . My idea here started because I work remotely for a company who builds systems based off the beaglebone. Soon, I plan on traveling, which is not a problem when you work remotely, but you may still need to bring hardware with you to write, and test software while you're on the go . . . I looked all over the place for reasonably priced aluminum enclosures. They really do not exist. Then it dawned on me that there are plenty of mini ITX cases on the market, why not look into that . . .
My idea in a nutshell:
1 Mini ITX case 1 ODROID XU4 1 Beaglebone Random capes 1 1TB hard drive or larger 1 USB 3.0 to SATA adapter 1 5 port ethernet switch 1 10A 5v power supply to power everything miscellaneous M3 mounting hardware pre-cut aluminum for motherboard tray, PSU hole cover, I/O plate cover miscellaneous panel mount adapters. So, some of this is not completely thought out yet. For example, finding a network switch that is power via 5v input could prove to be hard, or impossible to find, Usually ethernet adapters use a 48v power supply. At least that's been my experience. I have not looked in earnest yet. Then, just having looked, I notice the USB adapter I bought takes 12v input . . .
These I have already ordered and are on the way, or are already here:
USB 3.0 -> SATA adapter: https://www.amazon.com/gp/product/B005B3VO24/ref=oh_aui_detailpage_o01_s01?ie=UTF8&psc=1
Mini ITX case:https://www.amazon.com/gp/product/B00F2RRE1E/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1
Miscelaneous M3 mounting hardware is already here, or on the way, the aluminum will probably be here tomorrow. Then I have no made up my mind on which hard drive ill buy, but I have a spare here now, and a Samsung 850 Pro SSD( I may use both ). 5 port switch, and power supply are up in the air. Then all the panel mount stuff will probably come from Adafruit. Not ordered yet.
So, I've had the Xu4 for better than a month now. Maybe even two. But I have not powered it up yet, because I've had this idea rattling around in the back of my head for a few months . . .
It should not be long before I start building this system. The purpose of this system when complete, is to serve as an ABI compatible development platform. Meaning the beaglebone and XU4 are, or can be made ABI compatible. Which means no need for a cross compiler, period. The XU4 will then take on compile duties, as well as acting as a support system for all beaglebone projects in the future. The entails code storage, as well as NFS, and Samba duties. So code can be accessed from any local network machine( OS agnostic ).
-
yyrkoon got a reaction from zeke in Random beaglebone code snippets.
So, this is partly for me, and partly for others who need a refresher, or just do not know how. But I will be making several post here over time on how to write very simply code, to do one thing, or another. These, used in conjunction with a shell script could be very useful / flexible. After several long talks with many people, including some here on these very forums. I've decided that using C, to communicate with hardware, or hardware interfaces is best as can be for many situations. However, when you need to run several tools all at once, and have output formatted in some fashion, or easily modified. Shell scripts are very good at that sort of thing.
Read from a real-time clock
This post I will make about reading from a real-time clock. I spent hours messing around code related to I2C communications, and could never get exactly what I wanted. Plus, I wanted something that output date / time that looked very similar to the date Linux command. This could definitely been done using a shell script, but code size would probably be a lot larger. Additionally, a shell script would very likely be a lot slower, as with a script, one would have to be calling external cmdline tools to perform various operations. This example code is very fast, and prints to screen immediately after issuing the command. Since this command is very simple, and only prints the formatted date / time to screen. This could very easily be called from a shell script, and formatted further if need be.
The real-time clock I'm using for this demonstration is a Maxim DS3232 real-time clock which is very accurate, and also very expensive compared to other real-time clocks. At $7 + US each, it's not cheap. I also had to write my own device tree overlay for this RTC, which strictly speaking is not necessary. One can set the device up from the command line manually as demonstrated for many different RTC's on the web. In fact, all the device tree overlay that I wrote does, is set all this automatically up at boot. As far as teh actual overlay it's self. All I did was modify an existing overlay from the "official" bb-overlays repo on github. https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-RTC-01-00A0.dts
To look something like this:
/* * Copyright (C) 2015 Robert Nelson <robertcnelson@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /dts-v1/; /plugin/; #include <dt-bindings/board/am335x-bbw-bbb-base.h> #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/pinctrl/am33xx.h> / { compatible = "ti,beaglebone", "ti,beaglebone-black", "ti,beaglebone-green"; /* identification */ part-number = "BB-RTC-01"; version = "00A0"; fragment@2 { target = <&i2c2>; __overlay__ { status = "okay"; /* shut up DTC warnings */ #address-cells = <1>; #size-cells = <0>; /* MCP79410 RTC module */ rtc@68 { compatible = "maxim,ds3232"; reg = <0x68>; }; }; }; }; On our cape, the RTC is on bus I2C-2, which is already enabled by default for capemgr. The rest of the above just means that status is okay(load the device ), the kernel module to load is called "ds3232", and the device address on the bus is 0x68.
Now on to the actual C code for reading from /dev/rtc1:
#include <stdio.h> #include <stdlib.h> #include <linux/rtc.h> #include <sys/ioctl.h> #include <sys/time.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> void display_date_time(void) { struct rtc_time rtc_tm; int fd = open("/dev/rtc1", O_RDONLY); if(fd == -1){ perror("/dev/rtc"); exit(errno); } /* Read the RTC time/date */ int retval = ioctl(fd, RTC_RD_TIME, &rtc_tm); if (retval == -1) { perror("ioctl"); exit(errno); } int d = rtc_tm.tm_mday; int m = rtc_tm.tm_mon + 1; int y = rtc_tm.tm_year + 1900; const char *wdays[] = {"Sun","Mon","Tues","Wed","Thur","Fri","Sat"}; const char *mnths[] = {"Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"}; int wday = (d += m < 3 ? y-- : y - 2, 23*m/9 + d + 4 + y/4- y/100 + y/400)%7; fprintf(stdout, "%s %s %02d %02d:%02d:%02d %d UTC\n", wdays[wday], mnths[rtc_tm.tm_mon], rtc_tm.tm_mday, rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec, y); } int main( int argc, char **argv ) { display_date_time(); return 0; } As one can see, most of this code is for formatting the output in a specific way. In this case, the output will look exactly like the output one might expect to see after issuing the command "date". However, this output is fixed to output the date / time in the UTC time zone. As for one of the projects I'm using this in is for devices spread out all over the US, in 3 different time zones, and we do not care so much what the local time zone of that system so much, as much as knowing a given time "standard". e.g. if something fails, and we need to tell a customer what failed, and what time it failed, we can, Then if we need to convert that time to their time zone, easy.
Notice that the read() is handled by ioctl(). . .
Output:
root@wgd:~/# gcc -Wall -o read_rtc read_rtc.c root@wgd:~/# ./read_rtc Tues May 09 23:08:49 2017 UTC
-
yyrkoon got a reaction from zeke in Random beaglebone code snippets.
Read from a DS18B20 temperature sensor
Again, very simple code to read from a device, and put that read information out to stdout. In this case, reading from a 1-wire DS18B20 sensor. The pin used is unimportant, so long as that pin is configurable as gpio, and is not already in use by another device. 1-wire is one of the simpler sensors to connect to a beaglebone, and can be plugged directly into one of the two headers on the beaglebone using jumper wires. You need power(3v3), ground, and a gpio pin connected. See the DS18B20 datasheet to determine which pin on the sensor is used for what purpose. As for setup in Linux for this sensor. You can search the web for a guide as to how to do this manually from the cmdline, or you can use a device tree overlay. I used this overlay file as a template, then modified the pin information to reflect the pin I needed to use. https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-W1-P9.12-00A0.dts
C code:
#include <stdio.h> #include <dirent.h> #include <string.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> int read_DS18B20(void) { DIR *dir; struct dirent *dirent; char dev[16]; char devPath[128]; char buf[80]; char tmpData[6]; char path[] = "/sys/bus/w1/devices"; ssize_t nread; dir = opendir(path); if(dir == NULL){ perror("/sys/bus/w1/devices"); exit(errno); } while((dirent = readdir(dir))){ if (dirent->d_type == DT_LNK && strstr(dirent->d_name, "28-") != NULL){ strcpy(dev, dirent->d_name); } } (void)closedir(dir); sprintf(devPath, "%s/%s/w1_slave", path, dev); int fd = open(devPath, O_RDONLY); if (fd == -1){ perror ("/sys/bus/w1/devices/28-*/w1_slave"); exit(errno); } long tempC = 0; nread = read(fd, buf, 80); if(nread > 0){ strncpy(tmpData, strstr(buf, "t=") + 2, 5); tempC = strtol(tmpData, NULL, 10); } close(fd); return tempC; } int main (void) { float temp = read_DS18B20() * (1 / 1000.0); printf("Temp: %.3f C \n", temp); return 0; } Output:
root@wgd:~/# gcc -Wall -o read_ds18b20 read_ds18b20.c root@wgd:~/# ./read_ds18b20 Temp: 25.312 C
-
yyrkoon got a reaction from zeke in Random beaglebone code snippets.
How to read an ADC
So this bit may seem a little odd to some. Hell I know the hardware, and wrote this really quick snippet as a demonstration, and I think it's odd. The short story here. Is that we have a pin multiplexer on AIN6, and this multiplexer selects an external channel based on a bit pattern sent to it through 3 GPIO pins. That code I won't be showing in this post. but I wanted to point out why I have an odd "mvolts" value. Which indicates maximum input voltage before the voltage limiting resistor network. e.g. the on board ADC pins can only handle 1.8v absolute maximum voltage, and I'm pretty sure without all circuitry voltage drop, outside maximum voltage is supposed to be 0-10v, and wulf probably designed the voltage into the ADC it's self to be less than 1.5v . . . So I started with 10v in mind, saw the reading was definitely too high, and then played a guessing game until the voltage I read from a volt meter, matched what I was reading through the ADC. So there is definite resolution loss here . . .
Anyway, the best and easiest way to load drivers for the ADC is to load the stock ADC overlay from /lib/firmware/.
root@wgd:~# ls /lib/firmware/ |grep ADC BB-ADC-00A0.dtbo
That is the file to load. Which can be loaded through capemgr via the command line manually, or from /boot/uEnv.txt at boot.
ADC C code:
#include <unistd.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <errno.h> #include <stdlib.h> const char *ain6 = "/sys/bus/iio/devices/iio:device0/in_voltage6_raw"; int main() { int fd; int len; char adc[5] = {0}; float madc = 4095.0f; float mvolts = 7.7f; float bvolts = (mvolts / madc); fd = open(ain6, O_RDONLY); if(fd == -1){ perror("ain6"); exit(1); } len = read(fd, adc, sizeof(adc - 1)); int adc_val = strtol(adc, NULL, 10); float voltage = adc_val * bvolts; printf("%f \n", voltage); close(fd); return 0; } Output:
root@wgd:~# gcc -Wall -o adc adc.c adc.c: In function 'main': adc.c:14:6: warning: variable 'len' set but not used [-Wunused-but-set-variable] int len; ^ root@wgd:~# ./adc 0.030085 A couple things to notice here. First is the warning I'm getting back from the compiler. This is because I'm using the -Wall option, which pretty much tells the compiler to use strict reporting of warnings. It is my belief that one should always at least use the -Wall compiler flag. Then we should treat these warning as if they're errors, and correct them. Which( and yeah I hate explanations like this too ) I'm ignoring for this one situation. Basically "len" is a return value from read() which can let us know how many bytes were read out of the file, and we absolutely should test this value for a non negative number. Then act on negative numbers as an error, which could be done a few different ways. For this demo, I was not sure in a pinch what would be a better way to handle that potential error. Mostly because I know these values will always be 0-4095, unless there is a problem with the hardware. At which point we're done anyhow( probably a blown processor ). One way to deal with this kind of error, would be to use perror() followed by exit(errno) in an if block. But at this point I'm fairly confident the system would not be running anyway . . .However, the values coming out of the ADC module should always be 1-4 characters, so how do we test for no characters ? NULL, but if we're reading out a NULL, how did our code make it thus far anyhow ? Additionally, if we're reading more than 4 character . . .Not only do I believe this to be impossible because of the way I wrote this code, but if it were somehow possible. We'd have a buffer overrun. Which may be a very good idea to test for. If for nothing else, good practice ? You decide.
Secondly, the really low, but not absolute zero value. Well, I've come to realize that when working with circuits of this nature, that can not tied to ground, or pulled high. You're basically "floating" but close to a low, or a high . . . again, I'm not exactly an EE, so maybe someone who cares to can elaborate further. But I always think of this sort of situation as induced parasitic voltages from the circuitry. I'm definitely all ears if someone has a better explanation, or insight into this. . .But I've tested these readings against a volt meter, and am reasonably happy that I'm "close enough" for my own purposes. Someday, perhaps I'll buy a USB computer style Oscilloscope, in hopes to enlighten myself further..
-
yyrkoon reacted to LiviuM in What is your Backup Process?
Hi,
for the projects I need to access from multiple places (and needing some privacy) I've configured a small git server and put gogit/gogs *) on top of it.
Because the core is git, I can use it from command line and gogit gives me the possibility to use it in a way similar to github and (the reason I use it) allows me to define "virtual users" - I can allow other people to access the private repositories without sharing my (main) credentials.
I have luck with a good hosting offering all needed tools.
Cheers,
Liviu
*) I suppose any "interface" will do the same, I've used gogs because I found a tutorial (in German) about the installation on my server.
-
yyrkoon reacted to zeke in What is your Backup Process?
By the way, I just looked into the cost of a paid github account and the price is $7/month or $84/year.
That gives you unlimited private repo's.
Alternatively, gitlab community edition is freely available if you want to self-host. I'm researching this option right now.
-
yyrkoon got a reaction from zeke in What is your Backup Process?
This is where (possibly) git could come in handy, Lets say you need a specific file from a specific day for whatever reason. But anyhow, I personally, do not necessarily agree with the strategy you chose. But the point is here. we do not have to agree, because what you're getting is what *you* want. At minimum, what you think you want right now.
Still, I urge you to look at your process, and think about it objectively. Which I think is what Rick was also trying to do. Finding an outside corner case where your backup strategy would fail you for a specific case. But let's say it does not fail, and does end up copying 1000 iterations of the same file slightly modified . . . this also may be less than desirable if that outside corner case just makes 1000 copies of the same file, with a different time stamp. or whatever.
Really, what you need to think about is exactly what you want, and if your strategy is fulfilling what you want / need. For me, the difference between a file being saved when actual code differences have been made is a must, Meaning, I change a single line, I may want that change to stick and be persisted, For you, that may not be appropriate?
So, for me personally. I think a local git hub may be exactly what I want, but also having a redundant copy of that local git would be necessary. For you . . . it may be different. Have I beat this horse a bit too much ?
-
yyrkoon reacted to Rickta59 in What is your Backup Process?
What happens when you do:
$ for rev in $(seq 1000); do cat /dev/null >reallyimportant.c; echo $rev; sleep 1; done
How many revisions does it save before it starts throwing out old copies and you end up with an empty c file?
-
yyrkoon reacted to Rickta59 in What is your Backup Process?
In the 37 years I've been writing code, I've only asked an admin to recover a file for me once. Turns out that file was on a disk that was being backed up by a SCSI tape drive that had been having problems and of course all the tapes were bad. However, it is always easier to write code the second time : )
-
yyrkoon reacted to zeke in What is your Backup Process?
So I have finally got my new file realtime backup system installed and operational.
The file server details:
OS: Ubuntu 16.04.2 box Storage: 8TB Western Digital Red Software: NextCloud server The client details:
Client 1 OS: Win10 Client 2 OS: mac OS Client 3 OS: Ubuntu 16.04.2 Desktop Software: NextCloud client on each Usage:
Using NextCloud Client, sign into the Server Select local directory you want to backup Add it to the Server Stand back and it will copy everything over to the server automatically I have observed that if you create a new file in the local monitored directory then the NextCloud Client will almost immediately copy it over to the Server without your interaction. I like that.
If desired, you can setup another client machine and get it to replicate a files from the server to itself locally. Multiple redundancy.
So far, this system has transferred over 110GB to the server unattended.
This configuration will backup files that I generate on a regular basis. Now, I want to setup git and subversion on this same server so that I can take care of files generated during software coding (git) or hardware design files generated by Altium (SVN).
So far, I like NextCloud and it fits my work processes.
-
yyrkoon reacted to zeke in Is it just me ?
I hear you.
I understand.
You're right.
I appreciate your honesty.
Thanks for keeping it real.
-
yyrkoon got a reaction from Frida in Is it just me ?
It's really frustrating. Because I knew the answer to the question asked, and gave most of the answer already. I was just waiting to make sure the problem was as it seemed to be. For this, the person needed to give me some information, that should have already been provided . . .But since young people do not seen to know how to properly ask a question. It's all my fault.
Yes, yes, yes, I do not know how to properly ask a question myself sometimes. We're all guilty. But you know, I can usually find myself a way out of a wet paper sack . . . We all need help, we're all also not all knowing . . . we're people, and we're all flawed. Great. But at least when I take the time to help you out. Show some appreciation at least . . .
-
yyrkoon got a reaction from Frida in Is it just me ?
So, I've been trying to help out for IDK maybe 5 years now on the beagleboard.org google groups. And,I see all kinds of stupid things. Just tonight, I'm trying to help out someone who obviously could not <insert explicitive > with out a link on instructions how to do so . . .
So, I answer this person, tell him he needs to be more verbose in the explanation of his problem, then proceed to tell him what I think the problem is. This goes on for a few posts . . . Robert Nelson comes on, says the same exact thing I say, but gives this idiot an exact link to something the guy should have already known . . . suddenly, it's fsck all to me and thank you very much Robert Nelson sir . . .
Make me want to go out and help people spitting on me in the street . . . Yeah, sarcasm definitely.
EDIT:
Yeah I probably should have mentioned the point, My point is that, is it just me, or did young people get drastically less . . .intelligent ? Sure seems that way from where I'm sitting. Not only that, if you do not give a link to something, for this younger generation. It seems they can not figure things out on their own. Let along come up with an original idea, or at minimum, any idea that was not handed to them by someone else . . .
-
yyrkoon reacted to zeke in Am i doing something wrong trying to program a 28 tssop 430g2553 with a launchpad
This is my schematic for a typical msp430 programming setup.
Notice the resistor and capacitor on the SBWTDIO line?
Compare that to your schematic. What do you see?
-
yyrkoon reacted to veryalive in Am i doing something wrong trying to program a 28 tssop 430g2553 with a launchpad
Its definitely possible to program the 2553 / 28 pin device with the Launchpad - especially with CCS. So, likely there's a PCB / wiring issue on your proto.
Looking at your schematic.... the capacitor C2 / 0.1 uF -- not needed. Reset needs a +- 30K pullup / 1nF to ground but this may already be provided - depending on where exactly you wired your jumper onto the Launchpad.
Can we assume that you've got +3volt / GND connected? Anything else on the schematic we should know about?
And I would start with the CCS 'blink' example (toggles P1.0 - often connected to an LED), just to check the communication via Spy By Wire.
Keep going - it'll work !!
-
yyrkoon got a reaction from NurseBob in Beaglebone enclosed development system.
@NurseBob So you've show interest in this through another post. Instead of polluting that post, I figured I would respond here. Where to start. . . My idea here started because I work remotely for a company who builds systems based off the beaglebone. Soon, I plan on traveling, which is not a problem when you work remotely, but you may still need to bring hardware with you to write, and test software while you're on the go . . . I looked all over the place for reasonably priced aluminum enclosures. They really do not exist. Then it dawned on me that there are plenty of mini ITX cases on the market, why not look into that . . .
My idea in a nutshell:
1 Mini ITX case 1 ODROID XU4 1 Beaglebone Random capes 1 1TB hard drive or larger 1 USB 3.0 to SATA adapter 1 5 port ethernet switch 1 10A 5v power supply to power everything miscellaneous M3 mounting hardware pre-cut aluminum for motherboard tray, PSU hole cover, I/O plate cover miscellaneous panel mount adapters. So, some of this is not completely thought out yet. For example, finding a network switch that is power via 5v input could prove to be hard, or impossible to find, Usually ethernet adapters use a 48v power supply. At least that's been my experience. I have not looked in earnest yet. Then, just having looked, I notice the USB adapter I bought takes 12v input . . .
These I have already ordered and are on the way, or are already here:
USB 3.0 -> SATA adapter: https://www.amazon.com/gp/product/B005B3VO24/ref=oh_aui_detailpage_o01_s01?ie=UTF8&psc=1
Mini ITX case:https://www.amazon.com/gp/product/B00F2RRE1E/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1
Miscelaneous M3 mounting hardware is already here, or on the way, the aluminum will probably be here tomorrow. Then I have no made up my mind on which hard drive ill buy, but I have a spare here now, and a Samsung 850 Pro SSD( I may use both ). 5 port switch, and power supply are up in the air. Then all the panel mount stuff will probably come from Adafruit. Not ordered yet.
So, I've had the Xu4 for better than a month now. Maybe even two. But I have not powered it up yet, because I've had this idea rattling around in the back of my head for a few months . . .
It should not be long before I start building this system. The purpose of this system when complete, is to serve as an ABI compatible development platform. Meaning the beaglebone and XU4 are, or can be made ABI compatible. Which means no need for a cross compiler, period. The XU4 will then take on compile duties, as well as acting as a support system for all beaglebone projects in the future. The entails code storage, as well as NFS, and Samba duties. So code can be accessed from any local network machine( OS agnostic ).