Jump to content

Unofficial MKV Expansion Board and HDK


Oli
 Share

Recommended Posts

Attached is a picture of my prototype expansion board using the "un-documented" MKV expansion bus.

I tried to make the board extensible so I can interface the pineapple easily with whatever I want (Raspberry Pi, BeagleBone Black, etc).

My current configuration has the following features:

  • LEDs (x2)
  • Buttons (x3)
  • Arduino based Teensy board (powered directly from the MKV)
  • OLED screen.

The core part of the board is pretty simple to make and based on open source hardware so people can build and improve upon it. The cost to build is approximately $10 for the core board plus whatever additional devices you want to add to it (my configuration probably costs about $50).

You can add pretty much whatever you want to the Teensy pins - which run at a standard 3.3v. I have everything in my prototype working as a proof of concept via the command line, so the next step is to start fleshing out a feature rich "HDK" and make the board genuinely useful.

I'm interested to hear:

  • What features / use-cases people have for MKV expansion boards?
  • What killer features is my prototype missing?
  • Would any other makers / electrical engineers like to join forces, optimize the design and create a (probably) python based HDK? I'm a software engineer and just started dabbling in electronics, so it would be nice to get feedback on the design.

Oh, by the way, this prototype can emulate a keyboard and blow the rubber ducky out of the water too :)

post-45337-0-29613600-1401636926_thumb.j

Edited by Oli
Link to comment
Share on other sites

Very cool. I've been wanting to do a similer project but never had the time to "decode" the expansion port. I would be interested in helping in anyway that I can. I have been an electronics hobbiest for years now, however the software side isn't my strong suite.

The first obvious use that I can think of would be the ability to use the buttons and lcd to get and change the status and operation of various infusions.

Anyway, let me know what I could do to best help this project. :-)

Link to comment
Share on other sites

Are you going to post your work and specs as you progress? This is super interesting, I bet you everyone and there brother will be watching.

What do you think about adding a bluetooth , usb, and wifi connectivity ? This would be perfect for having the pineapple as a central hub for something, or maybe have the pineapple use something else for the computing power needed. Graphics card crunching power dare I say? What about having USB connectivity and Rikomagic MK802iv?

Link to comment
Share on other sites

Anyway, let me know what I could do to best help this project. :-)

Thanks! I'll write up the details in the next few days and I'd appreciate any feedback / improvements that you can give.

Are you going to post your work and specs as you progress? This is super interesting, I bet you everyone and there brother will be watching.

What do you think about adding a bluetooth , usb, and wifi connectivity ? This would be perfect for having the pineapple as a central hub for something, or maybe have the pineapple use something else for the computing power needed. Graphics card crunching power dare I say? What about having USB connectivity and Rikomagic MK802iv?

Thanks! Yes, I'll post details as the project progresses. It is all open source so feel free to ask if you have any ideas / questions / etc.

Bluetooth, USB and WiFi are probably best handled via the MKV onboard USB port, though the arduino can definitely do so stuff around ethernet / bluetooth.

Offloading tasks to another computer / device is something I am interested in. The MKV processor is pretty slow and bit-banging I2C isn't ideal... I'm using the teensy to handle things like the OLED screen logic. You could pass off whatever tasks you want (pretty much) to a slave device, where appropriate.

Not really anything to add, but I tip my hat to your skill and accomplishment, kind sir. Very nicely done.

Thanks!

I've already learnt a lot with the project. The current revision board has a few "hacky" hardware design features I'd like to fix and I also have some other ideas I want to implement.

My current plan is to get a rev. 2 hardware design built that I'm vaguely happy with - this will be the baseline documented version. I have ordered the parts that I need and will try and work on the design on evenings this week and then do the build next weekend.

The changes that I want for rev 2 are:

  • Add a 2.5V voltage regulator
  • Add 2 WAY DIP switch
  • Tidy up wiring

I have a few compelling use-cases for the hardware that I would like to implement.

Link to comment
Share on other sites

A web Gui would be sweet. Much like the pineapples, hmm, this could be a good 'infusion' for the pineapple. Maybe a modular base for modding your own infusion, or adding to your infusion, for new projects based off your base hardware?

That is the plan :)

A well thought out command line means of interacting with the GPIO pins along with a slick standalone webpage for configuration. Depending on how lazy I am, I might start replacing the existing web interface by a free (as in freedom) alternative, page by page.

No chance I'm working on an "infusion" though, other people can make a wrapper infusion around whatever HDK interface is developed though this project though. My HDK/web UI will work with whatever HAK5 release as an expansion board too.

I have a feeling that the UI will have stuff for the pinout when its ready :P

Yes, probably a poorly thought out bare bones UI (that doesn't address most of the problems/use cases) and that is proprietary so can't easily be improved upon.

I believe that fully harnessing the community input will result in a much better product that can be adapted as power users see fit - this won't impact that HAK5 business model though as the MKV is pretty unique hardware and 99% of people would prefer to buy a nice small expansion board from the Hakshop rather than spend $100+ on components, get electronics equipment and spend hours soldering.

Still waiting for decent integrated UI for the built-in DIP switches seven months after launch, existing hardware has a bug that will tie up the one USB port in the MK5... just saying :)

Note to self:

  • No need for an official pinout. Look at the circuit board (or the Naked Pineapple posting by Pentura Labs) - the GPIO pin numberings are there.
  • You have 9 GPIOs running at 2.5V.
  • You have a 3.3v power rail - be careful - connect this to the GPIO pins and you'll fry the AR9331.
  • What is the most awesome Arduino board out there that runs at 3.3V - the PJRC Teensy of course! Power this by the 3.3V rail.
  • How can we communicate with the Teensy? Use a logic level convertor to translate the 2.5V GPIO pins to a Teensy friendly 3.3V. Then bitbang some software I2C (this will require 2 GPIO pins).
  • I run some Adafruit Sequins directly off the GPIOs! They work fine at 2.5V and they don't need a separate current limiting resistor. They have a pins spacing that works great on breadboard too! (slightly off the 0.1 inch grid but still fits just fine).
  • Tactile switches (buttons) and DIPs are easy to add. You need pull up or pull down resistors. My rev 1 version used pull ups, but I think pull down will work better - will experiment.
  • Powering buzzers etc should be possible. Won't be able to do this at 2.5v from a GPIO pins, so I guess a transistor or mosfet or something will be needed to act as a switch.
  • Using GPIOs in OpenWRT: http://wiki.openwrt.org/doc/hardware/port.gpio
  • Bit banging I2C in OpenWRT: http://wiki.openwrt.org/doc/hardware/port.i2c
  • Need custom wires? I use Pololu crimp pins and housings - they work great! I needed to source some 7+7 housings from Farnell.
  • I attempted to use a voltage divider to get the 2.5V as the logic level reference voltage and for the voltage to "pull up" to. I messed up the design a bit though (too keen to get soldering!). I think a Pololu regulator to get the 2.5V will be a better approach. For my rev 1 design I just sacrificed two GPIO pins to get the 2.5V reference voltages, obviously this needs fixing for rev 2.
Link to comment
Share on other sites

Yes, probably a poorly thought out bare bones UI (that doesn't address most of the problems/use cases) and that is proprietary so can't easily be improved upon.

Did you mean that to sound that way? I and most of the people here have high regard for Seb, Darren, and the rest of the gang, and the fine work they are producing.

That said, I think what you are doing sounds like great fun, and is definitely in keeping with the spirit of the WiFi Pineapple.

I look forward to watching how your endeavor progresses. Please keep us updated.

Link to comment
Share on other sites

Did you mean that to sound that way? I and most of the people here have high regard for Seb, Darren, and the rest of the gang, and the fine work they are producing.

Sorry, that might not have come across right (not trying to troll!). I have a high regard for them too,

The point I'm trying to make is that (it seems to me) that UI is always a minimal "bolt on" that is not very refined and not well documented and only suitable for trivial use. We then wait a few months for whistlemaster or foxtrot to write a separate infusion to add a little bit more functionality (but only semi integrated due to infusion limitations) and everybody goes wild at unlocking a small fraction of a features potential.

I bought the WiFi Pineapple / case / battery at the launch party to hack the hardware, explore the security concepts and write some cool software and all I have had is friction, bugs, lack of documentation, etc.

It seems silly to me that the people I regard highly and that got me interested in computer security won't let me hack my own device and want me to wait the best part of a year before they document something as central to the device as the expansion bus! I have an interest in hardware and electronics and want a proper documented, robust platform to work with and be able to unlock the potential of the unique MKV hardware.

In my humble opinion, the built in DIP switches are a potentially useful feature but lacking proper documentation and extensibility - if they are not properly documented and customizable now, why on earth should I think that the HAK5 hardware UI (an order of magnitude more complex) will be any better documented/implemented? (How do the switches work, exactly when in the boot up process are they run, how do I change them to be toggles for functionality - so for example not boot mode but runtime toggles for, say, Karma - how are they read at runtime from an arbitrary script, how do I remove the system functionality and use them all myself, where is the code that actually reads the sqlite file, how do they interact with OpenWRT etc).

I'll shut up though since I seem to be in the minority that is dissatisfied.

I'll just continue my hardware project quietly and wait and see what happens by DEFCON. I'm hoping I will be proven wrong and I'll be super satisfied/impressed.

At the very least I hope that I have raised expectation as to what the expansion bus should be capable of, exercised my rights under GPL to get access to firmware, raised the questions about what license a HDK should be released under and shown people like me who are getting frustrated with respect to the hardware that the information is out there to make it work now without having to switch to another platform.

Link to comment
Share on other sites

hey Oli.. are you planning on posting your build here, or on another site? I have some projects im working on and planning on doing build logs myself. Interested big time on this project, but also about how you are going to do it...

Probably here - although I will need to find somewhere to host the images.

I might see about a github wiki or something instead - that way I can post any HDK code / GPL Pineapple code that I work on in the same place.

Last week I got the voltage regulator stuff working fine - can't decide whether to do another build of the board this weekend or progress the software, keeping things on my breadboard. I've added a real time clock now so that my Pineapple always has the correct time, irrespective of whether or not there is an internet connection.

Link to comment
Share on other sites

Kudos Oli. This is a very interesting project. I am eager to see your build guide. :-) I have decided to give up and take a break of undetermined length from the pineapple, due to the sorry state of documentation and also because I've started expirementing with FPGAs. Hopefully when I return to the community, there will be an abundance of documentation. Fingers crossed!

Link to comment
Share on other sites

I'm amazed at people who hack hardware how their able to make stuff out of a box like that all them wires and knowing where each wire gos to just to make it work mind blowing shame i can't find any people around to do show me stuff like this.

Link to comment
Share on other sites

I'm amazed at people who hack hardware how their able to make stuff out of a box like that all them wires and knowing where each wire gos to just to make it work mind blowing shame i can't find any people around to do show me stuff like this.

It's pretty easy - I only started tinkering a few months ago. Just get an Arduino starter kit and have a play!

Link to comment
Share on other sites

Great job looks like you have made a leap....... expecting full docs on a project from guys that have a ton of stuff on thier plates is like asking for the happy ending for free.

very stoked to see where you take this.

Edited by Baker29
Link to comment
Share on other sites

expecting full docs on a project from guys that have a ton of stuff on thier plates is like asking for the happy ending for free.

I think that many people would agree with me when I say that expecting documentation for a product that I pay for isn't unreasonable. Especially when we were told that the documentation in question would be ready at weeks end, a month ago. (see my topic asking for api documentation).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...