I’m involved in the rLoop team, we are building a 1/3 scale Hyperloop Pod for the competition hosted by SpaceX. Learn more about it here: https://www.indiegogo.com/projects/help-build-rloop-s-pod-for-spacex-hyperloop-comp
I’m involved in the rLoop team, we are building a 1/3 scale Hyperloop Pod for the competition hosted by SpaceX. Learn more about it here: https://www.indiegogo.com/projects/help-build-rloop-s-pod-for-spacex-hyperloop-comp
I went to spectate RoboGames 2015. If you didn’t go, WHY THE HELL NOT?!
I live literally a 10 minute walk away so I went both Saturday and Sunday. Since I walked in, I accidentally walked through the back entrance, so I snuck into the pits without a badge 😀 but I did still pay for a ticket after. I got some pictures in the pits, not stuff I see every day.
I put together a highlights video. Actually probably only missed Friday, and missed 4 matches from Saturday and Sunday, I have about 20 GB of video… I’m putting a few up just as teasers but you should really come check out RoboGames next time or buy their DVD when they release it.
The combat is the only event where I could get good video without raising my arms. There were a ton of other competitions, like minisumo, line following, humanoids, soccer, hockey, etc. It really reminds me of the Canadian National Robot Games back in 2007, which I entered as a highschool student. The Canadian competition has long since been cancelled but it’s amazing how alive the Silicon Valley competition is.
Continue reading for more videos and pictures
I have been using my new Aquarium Computer for a week now. It’s performance is great, but that is subjective, because I built it for my own needs and I feel that it meets them perfectly. The circuit I built for it is having problems, I will investigate further.
But I had to take it out of the tank already. I attempted to implement full drive encryption, which required secure boot to be enabled in the UEFI BIOS. Well… long story short, the UEFI BIOS crashed when I tried to save settings and the motherboard stopped booting. The only fix is to use the CMOS reset jumper on the motherboard. So I drained the mineral oil and did exactly that, and I also connected the jumper to some spare wires so if this happens again, I wouldn’t have to drain the oil again.
In the process, I found out that most of the hot glue has come loose. So now I have no fake plants or rocks anymore. I will rebuild the tank again with decorations, but next time I will use epoxy. (although the tank still looks beautiful without any decorations)
I also picked up a Seek Thermal camera. I have some pictures of the Aquarium Computer. Notice that I can see the hot and cold zones of the radiator, and the hot and cold tubing. The tank itself is pretty much one color only, thermal cameras cannot see through the tank, only the temperature on the surface.
The Seek Thermal is neat, I’d say it’s worth it. Apparently it’s not the best sensor, but it is the only one for Android right now. I don’t have any real professional uses for it, it’s just a toy for me.
Back to the Aquarium Computer. I noticed many things about the mineral oil. First, make sure you understand fluid dynamics a bit, you want to make sure you are not making the pump work harder than it is. What I mean is, place the outlet tubing in a shallow depth. The hot and cold oil don’t mix well, you can clearly see the temperature gradient visually because they have different refraction index. This means that the cold oil sinks extremely fast, instead of dispersing into the hot oil. I mention this because originally, I aimed my outlet tubing deep at the power supply, but now that I know this fact, I can have my outlet tubing much shallower and just let the cold oil fall onto the power supply. This made the pump work better because there is less pressure at the outlet. Also, hot oil flows much quicker, I noticed that running the radiator without fans will make the pump work better because hot oil flows better.
More reviews/ranting (I am still in temporary housing, I can’t do much fun DIY stuff, but I have been buying things)… Continue reading
Just two rants… Continue reading
My project involving the PlayStation 4 and DualShock 4 has caught the attention of Sony, and after interviewing me, Sony Computer Entertainment America hired me as hardware engineer for PlayStation peripherals. Today is the day I take a one way flight from Toronto to San Francisco, and tomorrow will be my first day! Follow your passion, don’t be afraid to fail, and don’t be afraid to show off your skills.
And since I’m leaving my family… Continue reading
Since the RN42HCI does not support SSP (see previous weekly report post), I’ve switched to using a USB Bluetooth dongle to perform the spoof. This will allow me to get a huge data rate improvement, but at the cost of an USB port. I’ve made massive improvements to the USB host code, and my Total Phase Beagle USB 12 Analyzer really proved itself by telling me exactly how many tokens were sent and how many NAKs were received, which allowed me to gage my maximum sample rate, and see noticeable differences when I make code changes.
But the bad news is that I can only see these tokens and NAK events as “collapsed records”, which means I can see that in the span of 2 seconds, I have gotten X amount of NAK from device A, Y amount from device B. But I can’t see if I get them in the order A B A B or A A B A A B. I’ve contacted Total Phase support about this, and it turns out that their more expensive analyzers support “packet view”. I asked if this was a hardware limitation, they stated that it was not, and I can capture the packets myself if I use their API that they provide. I asked them to update their software to add the support for my model, and they said they’ll pass on the request to their engineers and they’ll consider it.
Progress on the DualShock 4 spoof is great. I managed to get a reliable connection between the DualShock and my UsbXlater circuit via Bluetooth, and my UsbXlater circuit to the PlayStation via Bluetooth. I have a basic man-in-the-middle Bluetooth proxy working completely. The only problem now seems like the PlayStation doesn’t want to take the input yet, although I can see the data being passed, the PlayStation does not respond. The bigger issue is that the data being passed is coming so fast that my monstrous STM32F405RG chip is actually running out of RAM, I need to figure out whether or not this is indeed a performance issue or maybe I’m stupid and caused a memory leak.
Here I have my debug output a millisecond timestamp with the amount of RAM left, then it crashes
8000 FreeRAM 98132
10000 FreeRAM 88364
12000 FreeRAM 80868
14000 FreeRAM 72460
16000 FreeRAM 63092
18000 FreeRAM 53836
20000 FreeRAM 46428
22000 FreeRAM 37364
24000 FreeRAM 27756
26000 FreeRAM 17788
28000 FreeRAM 10068
30000 FreeRAM 716
Exception Handler, source: 1
r0: 0xF0127C08, r1: 0x2000293C, r2: 0x0000000A, r3: 0x0000000A, r12: 0x000002FF
LR: 0x00000000, PC: 0x20002948, PSR: 0xA1000200,
Neat… I’ve worked all weekend on this and got this far, I’m going to take a break and work on something else now. But my next goal is to figure out if I am freeing memory correctly, then maybe improve USB performance even more, and then implement flow control. Once the system doesn’t crash, I can focus on why the PlayStation doesn’t respond.
I am playing around with BTstack (an open source Bluetooth stack) as a part of my on-going efforts to spoof a DualShock 4. After a bit of coding, I got it compiled into the UsbXlater firmware and now I am testing it.
One huge problem I ran into is that the RN42HCI I purchased from Microchip does not seem to support SSP (simple secure pairing). The Microchip website clearly states that the RN-42 is a “Fully certified Class 2 Bluetooth 2.1 + EDR module”. But using the read_local_version_information and read_local_supported_features commands, it is revealed that it does not support SSP and the version is actually Bluetooth 1.0b.
The PlayStation 4 uses SSP, this means the RN-42 cannot be used. I am hoping that Microchip will owe up to their mistake and either provide a replacement or a firmware update. Meanwhile, I will try doing some hacking to see if I can avoid the pairing problem, and also upgrade my USB stack a bit to see if using a USB BT dongle is still a viable option.
EDIT: According to Microchip tech support: “The current RN42HCI module does not support SSP. Updating the RN42HCI to BT3.0 for SSP support will have implications for our existing RN42HCI customers that do not use SSP.” So I was right, they are falsely advertising the product.
Spoke too soon about the DualShock 4’s Bluetooth security, although the link level authentication is figured out, it seems like Sony employed a challenge and response authentication mechanism over the HID channel itself. It was hard to spot because it occurs periodically at a slow rate, and it seems to tolerate up to 16 failed attempts before the PlayStation stops responding to an unauthenticated DualShock. 16 failed attempts is 8 minutes, and when I am doing reverse engineering, I only capture a few seconds worth of data. Matlo from GIMX pointed this out to me. Thanks!
This is bad news, the challenge key is huge, cracking it is out of the question. We also tried feeding it the challenge through USB and extracting the response from USB, but the response came back blank, which seems to indicate that the response calculation hasn’t been triggered. We tried replicating the exact series of transaction and it still would not trigger the calculation.
But the good news is that the challenge and response can be passed through. This means that “man in the middle” injection of data is still possible. This is my next goal, because my final goal is to make keyboard and mouse work on the PS4. Thus my next goal is to get Bluetooth passed through, establish a connection to both a DualShock and a PlayStation, becoming the man in the middle. Modify the gaming input packets from the DualShock before sending it to the PlayStation, while passing through all other traffic. Thus, the authentication packets are untouched, which does work because Matlo has already implemented this system as a test.
Things are going slow on UsbXlater but I am making progress. I’ve written some utilities to store persistent data in flash, with wear leveling! I figured out how to get the hardware CRC peripheral working inside the STM32F4 in a way that will allow it to spoof the CRC used inside a DualShock. I have started writing a minimal Bluetooth implementation for UsbXlater, but this is a huge undertaking and will take up a lot of time.
I got as far as enumerating a USB Bluetooth dongle, and then sending it a reset command and a read BD_ADDR command. I can get the command complete event back, and read the BD_ADDR back.
One obscure problem I faced was that I did not set the right sizes for the host channels. The problem’s symptom was that my code froze after I sent any command to the dongle. The code froze because an ISR was firing repeatedly, further investigation showed that it was firing because the host channel received a babble error (in the code, it is “bblerr”). This error was unhandled and thus the interrupt would repeated fire. The error occured because the host channel size was incorrect and the USB dongle was sending more data than what the size allowed.
I am hoping that I can at least wake up the PS4 next. This should be easy, a baseband connection request should do the trick. I’ve already tested this using a Raspberry Pi.
Another interesting discovery I’ve made during all of this: the Bluetooth link key used to pair and authenticate the DualShock 4 and PS4 is sent over USB. However, you can also perform “simple pairing” without a USB cable by: going into the PS4’s settings menu, then devices, then Bluetooth, and then initiate “PC mode” on the DualShock 4 by holding the share and PS button together.
Since the mystery with the Bluetooth security (or, the lack of security) is solved. From here on, it seems like nothing can prevent me from spoofing a DualShock 4. Full steam ahead! I even purchased some RN42HCI modules, because the USB Bluetooth dongles take up precious host channels. I will probably end up designing another PCB with the RN42HCI on it.
Anyways, I am chatting with Matlo from GIMX during all this hacking, he was able to adapt his old Bluetooth proxy to work with the DualShock 4. This proves that it is indeed easy to spoof a DualShock 4.
I don’t own an Xbox One and I have not kept up with any Xbox news, but the Xbox 360 used an authentication chip for the sole purpose of preventing other people from making knock off Xbox controllers. But as far as we can tell, Sony does not employ the same strategy. This will probably mean we can expect to see some cheaper alternatives to the DualShock 4, although the quality of which will be questionable.
I haven’t worked on the firmware for the UsbXlater for a while. This is because I really want it to work on the PlayStation 4 by spoofing the DualShock 4, but after some heavy investigation. It seems like this is impossible (in the sense of spoofing).
On the DualShock 4 circuitry, I have recently found the UART (aka serial port) pins for the Bluetooth module’s HCI (host controller interface). I used my logic analyzer to capture the data from the HCI. The results are posted on my wiki page about the DualShock 4, along with the pcap file with the entire capture.
The PlayStation 4 does not seem to accept input through USB. I did get UsbXlater entirely working and replicating the behaviour of a real DualShock 4, but the PlayStation does not respond. The Bluetooth connection is always active during this time.
Over Bluetooth, it seems that the L2CAP packets that are sent containing the report contains 4 bytes at the end that appears to be random. This could mean it’s a checksum or a hash. Update: it’s a CRC32, with a standard initial value. It’s easy to generate and I’ve already tested it on my sample capture data, so that’s good news. Credit goes to Matlo from GIMX
I do have a new version of the UsbXlater hardware that I can get assembled next week. It will emulate button presses on the DualShock 4 directly using electrical signals connected to the buttons themselves, instead of digitally through spoofing data streams.
I am aware that CronusMax has a “proof of concept” video of his hardware working on the PS4, but that video is a fake, what he did is program it to act as a HID keyboard, which only works in the menus. This is why the video does not show gameplay and why he does not plain outright say that it will be supported. Everybody who is making a device similar to XIM or Cronus or Eagle Eye Converter or UsbXlater is facing the exact same difficulties I am facing. I am disappointed in Cronus because the video’s purposes is probably to drive up pre-orders for people who are hoping for PlayStation 4 support which might never come.
The Playstation 4 is great, I got mine from Amazon 2 weeks ago, no problems. USBXLATER is on hold. After weeks of investigation and experimentation and collaborating with other people, it seems that the PS4 only accepts the data from DualShock 4’s Bluetooth interface, and not the USB interface, even if HID reports are sent through USB. This makes emulation via USB impossible. The next possible methods are to emulate the Bluetooth connection instead, or to install an internal modification to the DualShock 4’s hardware.
My Bluetooth module currently does not have some features that allow me to use it for spoofing so I’ll have to get a new one before even attempting it. I have started on the design for this internal modification already.
I attempted to use the Ubertooth One to do Bluetooth sniffing, but it is extremely hard to use and doesn’t seem to work right. I can obtain the LAP and UAP of my Playstation using it, with this information, the Ubertooth is supposed to be able to perform the necessary calculations required to follow the same frequency hopping pattern that the Playstation and DualShock uses. But the Ubertooth cannot successfully do this, and when it does seem to obtain the pattern, it fails to decode every single packet, leading me to think that it miscalculated the hopping pattern.
iOS’s BLE events seems to be polled at a really slow rate. I had to fix a problem which involved using the time when the event handler was fired. The timestamp was not accurate at all and appears to happen at 1 second interval bursts. This problem was fixed by using another method of obtaining the actual time when the notification was sent from the BLE device, I packed a sample interval into the packet I sent.
USBXLATER is going strong. Constantly improving and new features. During the testing, I picked up another generic USB hub to test…
Like the picture said, they do not work, I have other generic hubs that do work. These ones seems to exhibit a signalling issue. The strangest thing is that they’ll work if I plug them into my USB traffic analyzer, which means I can’t even debug the signals…
USBXLATER is going great! I’m using it to play through BF4’s single player, to work out bugs. I implemented anti-acceleration for the mouse, plus some filtering, and it feels amazingly like a PC game. I also gave a USBXLATER to Matlo from GIMX because he’s so helpful.
iOS and nRF51 are talking beautifully now. I feel like I can do whatever I want with BLE technology now.
I got a writable NFC tag keychain, I can use a phone app on my Galaxy Note 3 to write my contact info into the tag, and when you scan it, it asks you to import my contact information. Now I keep it with all my keys.
I went to a Freescale seminar. In summary (from the 3 sessions out of many I went to):
Had to fight off a wave of spam to my website, because I forgot to turn on account confirmation on my wiki, oops.
I’ve been working with the VS1000D chip, made by VLSI, who has very cool engineers.
Getting closer to the next generation console launch dates. My USB keyboard+mouse-to-console adapter is going great, adding in configurable data translation and such. Still waiting on new PCBs.
I went to the hacklab.to hackerspace in downtown Toronto. I met some great people there. The space is a bit small but they plan on moving to a bigger space soon. I gave away a few spare blank PCBs while I was there.
I played “Journey”. It is one of the must-play titles of the PS3. I suggest you play it in one sitting, with nobody around physically to bother you, and signed into PSN. This is the only way and best way to enjoy this unique game.
Still using a Mac Mini for iOS stuff, and still hating it. I don’t like their troubleshooting ideology. I tried to add Synergy to pre-login startup tasks but I got an error upon logging in saying that the task can’t start because of a security concern. When I tried to find a solution to this error, I was told to simply delete it, not helpful at all.
Synergy is pretty awesome, except for a few bugs.
Learning Objective C syntax from a C/C++/C#/Java background is NOT easy… I’ve done Windows Phone (I won a Xbox 360 in a MS sponsored hackathon, it was my first and only WP7 app) and Android development before, but iOS is still taking time to get used to.
Got my hands on a DualShock 4 controller early, I tore it down and I’m keeping notes on it.
The USB mouse/keyboard-to-PS4 adapter project is going great. I added so many features to the USB stack code, including dynamic host-channel allocation, so more devices can be supported. I got the emulated DualShock 3 enumerated perfectly thanks to Matlo from gimx.fr. I also sent out a revision of the PCB to be made, this revision has no built-in hub, which means it’s cheaper and more flexible, just a bit less convenient.
I finished “Beyond: Two Souls” in three sittings, it’s that good. It’s really hard to say if it is better or worse than Heavy Rain. I’ll be waiting for the DLCs for it. Quantic Dream has made it onto my “buy at release” and “never resell” game companies list.
I moved a few more pages from my old website to this new website. WordPress updated and I had to fix a few things.
New smartphone, I gave it a short review in this blog, also an even shorter review for the old phone. I spent a lot of time doing carrier unlocking, rooting, installing CWM recovery, and personalizing it.
I got a BLE custom service to be recognized on my PC, iPad Mini, and new Android 4.3 phone. A good milestone to reach. I had a bad experience with Apple along the way…
I got my USB host code to successfully enumerate a device that is behind a hub. This is another good milestone to reach. Now I can work on the USB slave code for a bit.
I managed to patch avrdude to fix some problems that Trinket was having in the field. Slowing things down helps a lot.
I finished playing Red Dead Redemption. A very good game, but it can be a time sink depending on your play style. The Undead Nightmare DLC for it turns up the comedy to 11, highly recommended!
I also finished playing Brothers: A Tale of Two Sons. It only took two nights of playing. It is kind short in the sense that the first Portal game was too short. It’s a decent game if you like the style, but it’s not without flaws. It sort of highlights the flaws of the Dualshock 3 controller as well, there is heavy usage of the R2 and L2 triggers and your finger tends to slip off. The Dualshock 4’s design seems to have taken these flaws into account.
Next up is probably Beyond: Two Souls. GTA V is on my radar but at a lower priority.
Last week was the Toronto Maker Faire. The entire faire can be divided into 4 major categories: 3D Printers, RGB LED strips, Arduino, and Raspberry Pi. Don’t take that generalization negatively, the entire faire was great. Most of the projects would beat our university symposium projects.
Seeing all the 3D printers in action and seeing their capabilities first hand really makes me want to get one. I’m just waiting a bit for the next generation of technology to become available (key patents will expire, enabling better printers).
I’m coding some FFT stuff. The nRF chip I’m using is an ARM Cortex M0, but running at 16 MHz, so I had to use some code that’s designed for a 16 bit MCU instead of something more powerful. It works like a charm though.
Gotta work on a few more examples for Trinket, making it do USB stuff like mouse and keyboard. A lot of exciting stuff for Adafruit coming.
I got to use my Hantek DDS-3X25, it is certainly useful at a reasonable price. I haven’t ran into the known sync issue yet so I haven’t used the firmware hack/fix for it yet.
Did some work regarding my clone of the Xim, the USB host library for STM32 is built in a really weird state machine, so I spent a few hours writing blocking variations of non-blocking functions. I got my TUSB hub chip enumerated. Good progress. Still a month away from PS4 launch, no rush.
Some old clients are catching up to me and I’m going to be very busy.
Red Dead Redemption is a very long game. Maybe I’m doing too many of the randomly generated “event missions”, and I don’t use fast travel because I want to do those events.
No post for last week because I didn’t have anything interesting to say.
Hacked my Rigol DS1052E to the 100 MHz firmware. Just had to place a file onto a USB drive, stick it in, hit one button. I had the newer firmware already which made it easy, older firmware has a more complicated upgrade procedure. I followed http://www.eevblog.com/forum/blog/changing-the-rigol-ds1052e-to-ds1102e-using-usb-the-dummy-guide/msg275388/#msg275388
I assembled another nRF51 board. More work to be done. Interesting design this chip has, but it runs at a slow 16 MHz. This is great for battery life but it’s going to cause problems for timing NeoPixel signals.
Something funny about working with Bluetooth Low Energy stuff: Most vendors only provide Windows based tools for programming BLE firmware, while so far only iOS devices support BLE, and you need a Mac to write apps for iOS. (yes, I know Android 4.3 is coming but that is very rare right now, I’m still waiting for the Note 3)
Got a AVR XMEGA prototype up and mostly working.
NeoPixels working on Netduino, tutorial is up on Adafruit: http://learn.adafruit.com/using-neopixels-with-netduino.
Web server on Netduino is very easy. I found http://forums.netduino.com/index.php?/topic/575-updated-web-server/ which is my starting point. Good thing I am already proficient with HTTP and ASP.NET and stuff.
Trinket and Gemma are for sale on Adafruit now. There are very rare reports of people who cannot get them working on one computer, then it works on another computer, and then it starts working on the first computer. I narrowed it down to one extra RJMP instruction that the bootloader has to execute when it is fresh (it will RJMP to another RJMP instruction), and once you’ve used the bootloader once, the RJMP is changed to jump directly to where the second RJMP will jump, hence become a little faster, and the issue (USB signal timing issue) disappears and everything is happy. This means prior to being sole, the ATtiny should be loaded with an image of the bootloader combined with a user application, instead of just the bootloader itself.
I finished Saints Row 4, while fun, I don’t think it’s nearly as funny as Saints Row 3. Red Dead Redemption is pretty good so far.
Stupid Rigol o’scope has the USB port upside down… It also doesn’t support my 16 GB thumbdrive which is another disappointment. I wish it had Eye-Fi like my camera.
I got native code baked into Netduino Plus 2’s firmware, so now I can run real time tasks without any interruptions or preemptions. The first goal is to get NeoPixels working on the Netduino platform. There will be a long tutorial after it’s all done.
Since a lot of the Netduino-NeoPixel stuff involves timing measurements, I realized that the interpreter on the Netduino is pretty slow compared to native code.
I’ve gotten a completely custom PCB for the nRF51 working. I ran into some trouble, it appeared as if my code froze (it wouldn’t respond to button presses, and later I discovered that it wouldn’t go past a certain function using a J-Link debugger), luckily I noticed a forum discussion about a similar problem, and it turns out that I had to change one crystal related setting during BLE stack initialization. See https://devzone.nordicsemi.com/index.php/custom-pcb-how-to-quick-check-if-ble-is-working-nrf51822ab and https://devzone.nordicsemi.com/index.php/what-could-make-ble-sample-applications-not-work,-but-radio-works-ok and https://devzone.nordicsemi.com/index.php/what-low-frequency-clock-sources-can-i-use
From what I’ve learned so far, BLE one key difference from Bluetooth Classic is that “services” are application layer, so you can make custom services. This is different from Bluetooth Classic’s preset “profiles”. Read https://devzone.nordicsemi.com/index.php/is-there-a-serial-port-profile-for-ble and https://devzone.nordicsemi.com/index.php/nrf-uart-app
I’ve been playing with a nRF dev kit from Nordic Semiconductors. The bad news is that they require a product key to access downloads. The kind-of-good news is that their code is designed to be compiled under Eclipse with GCC (hurray for open source). The bad news is that they’ve designed the files to use assumed toolchain install paths, their makefile literally says:
ifeq ($(findstring 86, $(ProgramFiles)), ) PROGFILES := C:/Program Files else PROGFILES := C:/Program Files (x86) endif GNU_INSTALL_ROOT := $(PROGFILES)/GNU Tools ARM Embedded/4.7 2013q1
So… it only works on the default install path of “GNU Tools ARM Embedded”, and only works for one version. Also note that spaces in paths are bad, brackets are even worse, especially with GCC. I had to do some editing with the project configuration and makefile before the examples can be compiled. (only some examples support GCC, all of them work in Keil).
There are plenty of other problems with using that kit. I didn’t know I had to buy a “motherboard” for it, which had buttons and LEDs and UART and stuff on it. Most of the demos depend on a button press to start. I had to solder on my own buttons and LEDs, and gave it a FTDI connector for the UART. http://i.imgur.com/ChFMyuD.jpg
My friend just got a CC2541 kit, last time I checked, he wasn’t having much luck with it.
I am considering picking up a Hantek DDS 3X25 (function generator). There are problems with it but there are also firmware fixes available so wish me luck.
Finished Uncharted 2 and 3, insanely good games, better than Tomb Raider (2013) if you compare the same style of games. I also started playing Saints Row IV but so far it’s been disappointing, there’s problems with the website (and thus I couldn’t download characters I wanted), the intro levels are very bland compared to Saints Row 3, and the game UI is terrible (the game actually pauses while you switch weapons). Also NONE of the PS3 games I’ve played so far had any loading screens, but Saints Row 4 had plenty, and some were right in the middle of the action.
I got my STM32F2 to jump to the built-in system bootloader. Also figured out that the default function for sending out SWO debug messages will freeze my code if no debugger is attached, which is kind of stupid but I fixed it with a simple check. Last week I got blocking UART working, this week I got non-blocking UART working.
It’ve got a TUSB2036 chip that won’t start the oscillator for the 6 MHz crystal, but sometimes it does start. This is holding up the Xim clone project.
I’ve begun 3D modeling the KSP Kontroller, the parts are going to be super expensive but industrial, it’ll look pretty cool.
I’m working a lot on XMEGA stuff, it seems to be great if you need complex behaviour at a low speed. It’s got peripherals with as much (or more) features as most ARM Cortex M chips, but still uses 8 bit instructions and capped at 32 MHz. No oscillator required for full speed USB because the internal oscillator can be auto-calibrated using USB SOF.
I’m going to document stuff I’ve learned every week, new stuff I’ve obtained, small progress I’ve made, etc.
How to design exposed conductive traces meant for silicone keypads: http://www.abatekgroup.com/designguide/04Electrical.html
I obtained a nRF51822-DK, a Bluetooth dev kit using Nordic’s nRF51822, which is a ARM Cortex M0 microcontroller with a built-in 2.4GHz radio transceiver. Once you own the kit, Nordic gives you access to the software you need, which is kind of annoying.
Successfully used my J-Link EDU with Eclipse and GDB, along with GCC ARM Embedded. I’ve done Eclipse + ARM before but this J-Link I got a few weeks ago. I got some code that can use SWO for debug/trace output and it works great with the J-Link as well.
Realized that the bootloaders between different STM32 chips have slight differences and it makes their own bootloading utility not work with certain sub-families. So I’ll be forced to write my own bootloader utility and hope that their documentation on the protocol is correct.
Got a new Netduino Plus 2, looks great, not as many pins as I’d like but the hardware features (especially Ethernet, that plastic RJ-45 jack is a great choice made by the designers) are worth it.
The STM32W stamp I made is finished (a breadboardable STM32W chip), no firmware or testing yet. PAN1326 breakout is done but no firmware yet. My “Xim clone” is made and firmware can do serial output so far. There are plenty of hardware I’ve built already without firmware…
Finished playing Uncharted 2. It’s better than Uncharted 1, the gameplay actually felt better than both Tomb Raider and The Last of Us, story was above average.
These weekly posts will only contain information that I want to/able to disclose.