Posted by: lluppes | January 11, 2016

Even More Interesting things I saw at CES 2016!

Part 3 of 3.    Part 1 is available here, and Part 2 is available here.

The event was held at the Las Vegas Convention Center and 6 other sites near there, with 170,000+ attendees, 3,800+ companies presenting, 2.4 million square feet of exhibits.  I walked about 6 miles a day while I was there.

LVCC

No trip to CES would be complete without a visit to the 3M booth

3M-Booth

And also a visit to the NRG booth

NRG-Booth

And I was able to watch a taping of a CNET Top 10 Show with Brian Cooley and take a load off my feet for a few minutes:

CNet-Show

eHang

One of the most publicized items of the week was the eHang personal quad copter.  This isn’t a toy that you fly around to take pictures…  this is like the Jetsons flying car, and it’s real (sort of…!)  They are talking about 23 minutes of battery life and the potential to fly up to 11,000 feet (does that sound like a good idea?!!), and retailing for $200,000-300,000.  It’s still under development, but don’t hold your break the the FAA to approve this anytime soon! Still kinda cool to see it!

eHang

http://www.wired.com/2016/01/fly-like-a-boss-with-the-ehang-drone-copter/

“Dr. Fuji’s Cyber Body Slimmer”

As I was walking around, I found this gadget that actually felt pretty good.  You stand on it and it shakes and jiggles your body like crazy.  Reminds me of one of those 70’s machines with the belt that shook you up.  But – after miles of walking, it did feel pretty good on my legs!

CyberBodySlimmer

http://cyberbodyslimmer.homestead.com/

Dream Monitor Setup

I recently bought a sweet new 28″ 4K monitor to replace the dual monitors on my home office desk (which is awesome!).  Then at CES I saw this setup and it makes me wonder if I don’t need three new curved monitors to put below the big one…???  This looks really sweet!

AwesomeDisplay

The Furo-S Robot

Very strange, awkward looking, and kinda creepy actually… but amusing!  (And only $9,990!)

FunBot

http://www.myfuro.com/

Hauwei Mate 8

Hauwei made the recent Google Next 6P, which was very highly received.  This Mate 8 looks awesome and has been released in China and some other countries, but the US (yet… not sure when or if…).  Huge screen and huge battery – direct competitor to the Galaxy S6.

HauweiMate8

http://www.cnet.com/products/huawei-mate-8/

LG Dual Washer

Very interesting — the washer has a separate second washer so you can do two loads at once.  The second on on the bottom is small, but would be perfect for the small loads.  Seems to me like it would be a waste of money to pay for two washers – and one more thing to break down!

LGDualWash

http://www.lg.com/us/twinwash-suite/lg-twin-wash-suite-wm5000-wd-graphite.jsp

Samsung Smart Fridge

Everyone was all excited about this and it got a lot of press.    You can order your groceries right from the door through a delivery service (so what? use your computer!)  The ONLY thing that I thought would be useful and interesting here are the door cameras — every time you shut the door it take a picture of the interior and uploads it to the cloud.  When you are at the store, you can just pull out your phone and look to see if you have enough of something… I think that’s a great idea!

Here’s my take:  I don’t want a fridge or a TV with a built in computer!  I want those devices to last for 20 years, and the computer will be obsolete in 3 years, leaving me with buyers remorse for 17 years…!  I just want a good fridge and a great TV display, then I’ll add an inexpensive smart device (like a Roku!) that I can replace as needed.

SamgunsSmartFridge

http://www.engadget.com/2016/01/08/samsung-family-hub-smart-fridge-hands-on/

Digitsole

Interesting shoe that buckles sort of itself (a.k.a. Back to the Future?), tracks your step, and has a built in light.  Again… why do we need this???

SmartShoe

http://www.digitsole.com/

WinBot

Now this was a device that could be useful if you have a lot of windows.  This thing is like a Roomba for windows – put it on the glass and it crawls around till the entire window has been washed.  If you had a large and tall glass tower that lived in, this would be perfect for keeping it clean!
Although – it is shown cleaning glass shower stalls, which would be kind of nice if it worked well!  (about $350 on Amazon)

WinBot

https://ecovacsrobotics.com/ecovacs-robotics-products/winbot-window-cleaning-robots/#

http://www.amazon.com/WINBOT-W730-Cleaning-Frameless-Windows/dp/B00CJUTOQU

LinkSys Router

Here’s one that I think I may end up purchasing… a super high speed router for the home.  I’ve been a bit frustrated by my current home network, so this may be the solution.  It’s not cheap (~$400 shipping soon), but promises to do a lot.

LinksysRouter

http://www.linksys.com/us/p/P-EA9500/

That’s all, folks!

That’s it for my CES summary – hope it was interesting!

Posted by: lluppes | January 9, 2016

More Interesting things I saw at CES 2016

Part 2 of 3.    Part 1 is available here, and Part 3 is available here.

More things that I saw at CES today…  The bandwidth here isn’t the greatest so I haven’t uploaded a lot of photos.  I’ll add those soon…

Beam Light Bulb Projector

Beam is a very interesting light bulb with a projector and an Android device built into it.  It can project light down onto your surface, or project the screen of the Android device.  So – the things you see in movies or concept videos like projecting a recipe onto the countertop would be very possible with this.

Beam1

http://www.beamlabsinc.com

BedPhones

Not for me, but interesting – headphones that are small, flat, and memory foam, so you go to sleep with them in your ears.

BedPhones

http://www.bedphones.com/

Bevel

Turns your smartphone into a 3D camera

Bevel

https://www.kickstarter.com/projects/matterandform/bevel-3d-photography-for-any-smartphone-or-tablet

Garman Bike Radar

Warns you if vehicles are approaching from behind you.

Bike-GarmanRadar

http://www.cesweb.org/Events-Programs/Innovation/InnovationAwards/2016/Fitness,-Sports-and-Biotech/Garmin-Varia%E2%84%A2-Rearview-Bike-Radar.aspx

Smart Halo

More smarts to put on your bike.

Biking_SmartHalo

https://www.smarthalo.bike/

BrydgeMini for iPad

Nice small keyboard that fits the iPad mini well and makes it look like a little iPad Air

BrydgeForIPad

http://www.brydgekeyboards.com/

PDP Super Charger

Recharge your Xbox controller in 60 seconds…  wow!

XBoxCharger

http://www.pdp.com/pages/pdp-at-ces-2016

DisplEver E-Ink Touch Screen

This little screen uses E-Ink to display the contents, which makes it very low energy.  It has no power or battery, but draws its energy from indoor lighting (like solar, but needs very low lumens).  Decent touch screen capabilities.  Looks like you might have to write your own custom app in Java…?

DisplEver

http://www.displ-ever.com/

Joan Meeting Room Display

This is a nice little E-Ink display to put outside of a meeting room for scheduling the room.  Limited application but might be nice for some places. Shipping in March for about $350.

 

JoanMeeting

https://joanassistant.com/

EcoVent

This little device might find a place in my home soon – it lets you configure the vents to customize the airflow through them.  I have an issue with the upper floor of our house always being warmer than the lower floors, so this might be an easy way to fix that.

EcoVent

https://www.ecoventsystems.com/

Kino-Mo Hologram Display

This was an awesome looking hologram displayer and drew a huge crowd oohing and aahing looking at the pretty holograms.

Hologram

http://bwestlondon.com/2015/08/17/the-skys-the-limit-for-new-hologram-start-up/

http://kino-mo.com/

HudWay

Awesome idea to add a Heads Up Display to an existing car.  This uses your smart phone and a navigation app, then puts that onto a glass display in front of you, so you see it through the windshield.  I saw a similar concept in action when I test drove a BMW M3 at CES this week, only their display was out over the hood.  This one would be up on your dash inside the window, but it’s a LOT cheaper then the BMW!  It’s a KickStarter project and will be shipping to backers soon, but you can preorder one for future delivery later this year.

HudWay1

https://hudwayglass.com

The Welt

Samsung made a smart belt that’s pretty interesting…  measures your waistline and counts your steps.  Still in the labs and not available to consumers yet…

Welt

http://www.theverge.com/2016/1/7/10727870/samsung-welt-smart-belt-wearable-ces-2016

Influx WiFi Enhancer

The idea here is that you just put this passive device under your wifi router, and your signal will get much stronger.  Great concept if it works as well as they claim.

WifiEnhancer

https://influxworld.com/products/wifi-router-dock/

 


Off the Beaten Path a little Bit…  or a lot…

Softceptor Internet Enabled Underpants

The guy in the booth could barely speak English, so I didn’t get much info, but he kind of pointed and chuckled at this when he saw me take a picture…   Click the picture to see more info.  There are things in this world that to not need connectivity or to be measured, and I think this is one of them…!

SoftceptorShorts

I couldn’t find a link to the product, but I bet they use this sensor…!

http://www.hktdc.com/suppliers-products/Softceptor-Electronic-Pressure-Sensor/en/1X06RY9X/2242541/

B-Sensory Little Bird

The world’s first smart vibrator driven by reading a book.  When you get to the right passage in the book, well…  you can probably imagine the rest…

eSensory

http://www.b-sensory.com/

Coway Clinical Bidet

Looks like this might be an interesting add-on/upgrade to your bathroom (not for me though!)

SmartBidet

This is still not as cool as the add-on I have in my bathroom (I got it from KickStarter)
The Illumibowl Night Light
http://www.amazon.com/IllumiBowl-Toilet-Night-Motion-Activated/dp/B00S7PAFK0/

 

Continued in Part 3

Posted by: lluppes | January 8, 2016

50 Interesting things I saw at CES 2016

Part 1 of 3.    Part 2 is available here, and Part 3 is available here.

I was fortunate to attend CES this year as part of the 3M delegation.  CES 2016 was held at the Las Vegas Convention Center and 6 other hotels nearby, with 170,000+ attendees, 3,800+ companies presenting, 2.4 million square feet of exhibits.  I walked about 6 miles a day while I was there.

LVCC

This post is a quick summary of a few of the really interesting things I saw this week that would have interest to my friends.

SleepNumber bed IT monitor

I’ve used fitness bands to track sleep before, but they are annoying and awkward, so I usually stop wearing them after a couple of nights.  This device automatically tracks your sleep each night, and can then make recommendations about your sleep number to help you sleep better.  It does this by replacing the air pump on your bed and uses that to measure subtle changes in the air pressure to document your sleep habits.  They said the mattress is embedded with sensors, but it’s really just the pump…  You can upgrade your existing Sleep Number bed, so I think I’ll be getting one of these very very soon!

SleepNumber

http://itbed.sleepnumber.com/it


(See also Samsung Sleepsense which does a similar thing for any bed – described below and coming soon)

Netatmo Presence and Welcome

I love the concept for these webcam monitoring systems.  The Welcome is out now, Presence coming out later this year.  Welcome is designed for in the house, and will notify you when it sees people and will recognize them also.  Presence is more for your driveway – it’s an outdoor light with motion detector.  It’s smart and only detects cars, people, and animals, and can then record those interactions, and notify you if you want.  We can’t see our driveway well, so this could be very useful.
I want one of these, and may end up with both of these. Welcome is about $169.  Not sure about Presence.

NetatmoPresence

https://www.netatmo.com/en-US/site

Fitbit Blaze

Nice looking smart watch – a really good evolution of the FitBit (with a WinPhone app).  This is a smarter fitness watch that looks nice, as opposed to a smart watch that has a fitness tracker.  Available in March for about $200.   Very tempting…

FitBitBlaze2
http://www.cnet.com/products/fitbit-blaze/

Halo Smoke Detector/CO2/Weather

Nice smoke detector that is smart enabled, also does CO2, and monitors weather alerts – coming later this year.  This was an indegogo crowd-funded project that seems to have made it to reality.

Halo1

http://halosmartlabs.com/

Canon Selphy

Super nice portable 4×6 photo printer (older models available).  A new one just announced today is coming soon.  This would be fun to have at a party of family gathering to print photos.  Another thought was that my mother-in-law prints tons of photos for albums, and this would be really nice to be able to print them at home easily.

Selphy

http://shop.usa.canon.com/shop/en/catalog/selphy-cp1200-black-wireless-compact-photo-printer-and-battery-pack-bundle

Sony Ultra Short Throw Projector

Very cool small projector they used to put videos up on walls and ceilings for ambient room setup.  They had several in a concept home, putting an 147″ 4K TV picture on one wall, then another one to put a TV on the ceiling above your bed, another one showing a fireplace on a wall, etc.   Used the big wall to set the ambiance in a room by projecting a huge nature scene with nature sounds to make your room seem like the outdoors.  Much like the movies did but real (i.e. Minority Report, Total Recall)
Available summer 2016 – no pricing available yet.

*** Update:  there is a reason I liked this so much…  On the Sony web site it lists a suggested retail price of ….   $50,000  !!!!  ****

SonyProjector1

http://www.cnet.com/videos/sony-portable-ultra-short-throw-projector/

Magnavox Over the Air DVR

Magnavox is making a nice looking DVR for cord cutters – with no monthly subscription fee.  Looks pretty nice actually.  $400-600 available Q4 2016.  More…

Smarty Pans – the connected Skillet

I think this is taking that connected kitchen a bit too far.   Are you really going to take the time every meal to tell the pan what ingredients you are putting in it…? If you do, it calculates calories and nutritional info for you and tracks it.  More…

Phillips Sonicare Toothbrush

They said this toothbrush was Bluetooth connected, but it’s really not – it’s for kids and only connects and tracks how long it runs when you push the button…😦

Sonicare1
More on kids brush…
However, they also had an interesting new tongue brush add-on for the brush which looked pretty nice.
More on Tongue Brush

Push for Prota – the Robotic finger

Quirky device that may be useful for pressing a button on a non internet enabled device, like a on/off button.  Started on indegogo.

PushFinger

https://www.indiegogo.com/projects/microbot-push-a-robotic-finger-for-your-buttons#/

Eve air quality sensor

Tests your indoor air quality and then has a large orb that glows green/red based on quality… interesting…

Eve

https://www.elgato.com/en/eve

GoTenna

This little device let’s you text another person that has one of these.  I could see this being very useful in wilderness or in urban emergencies or maybe on overseas family vacations where not everyone has connectivity.  Not sure where else…

GoTenna

http://www.gotenna.com/

Intel Compute Stick

Tiny little computer on a USB stick that you just plug into a TV and it works.  Released last year but with anemic specs that didn’t work great.  This year it was upgraded from last year with much better specs (but higher prices also…)  More…

GoSun solar cooker

Nice solar oven (recently featured on Top Chef)  Has some huge potential for someone (just not much for me…!)

GoSun

http://www.gosunstove.com/

Samsung Galaxy TabPro s (win10)

Nice little two in 1 tablet coming out soon, limited to 4G RAM, 128G SSD, and Core M (DualCore 2.2G) processor.  Not the best specs, and no price point yet.  If it’s cheap enough, it could make a nice competitor for the Surface.

GalaxyTabProS1

More…

Chip the robot dog

The dog develops its own personality…   Much of the fun of a dog, but without the hassle…?  But at least this one won’t pee on my carpet!

Chip

More…

Ninebot Segway Robot

Ride it, then let it turn into a robot when you’re not riding it.  (Unfortunately, I’m pretty sure my wife won’t let a Segway within 100 yards of our house!)

SegwayBot

More…

LifeFuels

Smart water bottle measures what you drink, and then you can add in supplements and track that as well.  Interesting, but again – I’m not sure where the value is in adding this tech to a simple device…   More…

Vahanna VR SW

This was awesome!  It did a livecast of a 3D video feed to the internet using GoPros (or similar) then those feeds through this software, up to the cloud, then anyone could view it on their 3D viewer.  They had a live feed of the convention going that you could view on Google Cardboard or Samsung Gear VR.

Vahana1

More…

iCamPro

This looks like a competitor to the Netatmo Welcome, but it with 360 face tracking capability.   The hardware looks good, but I wonder if the software is as good as Netatmos…?

ICamPro

More…

Eyelock Iris id

I could see this as being useful for a future replacement id for ATM pin code and foiling the ATM skimmers.

EyeLock

http://eyelock.com/

Samsung SleepSense

Put a sensor under the mattress (1 per person) and it monitors heart, breathing, motion (coming soon around $200-250)

SleepSense

http://www.engadget.com/2015/09/03/samsung-sleepsense/

Hackaball

Let’s kids easily program behaviors into a ball with motion sensors and lights.  More…

Norelco Series 7000 Smart Razor

Connected to show you how much you shaved, then you said if your sking was irritated or not and then tells you not to shave tomorrow…

NorelcoShaver

More…

Sensoria

Fitness apparel (i.e. socks) with sensors sewn into socks that track heart, gait, etc. and help you learn to run properly…

Sensoria1

More…

iNail Printer

3D Printer for your nails, pick a design, put your finger in, and you have a custom nail in seconds.  Pretty cool.  Available now for $2900…  seems like you could do a pretty cool little business at small shows and make that back pretty quickly.

NiNail

More…

PetChat

Video chat with your pet…  strange idea (a former colleague is working on this)  More…

 

Continued in Part 2, and Part 3

Posted by: lluppes | March 19, 2015

Installing Mono and ASP.NET on a Raspberry Pi

In my previous post, I detailed how to get a Raspberry Pi up and running and ready for some serious .NET development.

I broke this down into two blog posts because doing it justice in one makes it two long:

Part 1 – A Beginner’s Guide to setting up your Raspberry Pi
Part 2 – Installing Mono and ASP.NET vNext on your Raspberry Pi (this post)

<TL;DR>    (a.k.a.  Too Long – Didn’t Read!)

These scripts are available on https://github.com/lluppes/pisharp.
A free eBook with all this info and more is available at
https://raw.githubusercontent.com/lluppes/pisharp/master/RaspberryPiNetDeveloper_v1_Beta.pdf

To use these script files, first fetch the first master file from the repository by entering a wget command in the command line window on your Pi.  At this point you will have a file, but the operating system doesn’t know that it’s a script, so you have to go tell it to give the file execute permissions by running the “chmod” command. Finally, run that command file using the “sh”, which will in turn fetch the other files and automatically mark them as executable.

wget https://raw.githubusercontent.com/lluppes/pisharp/master/getScripts
chmod 755 getScripts
sh getScripts

</TL;DR>

 

Installing Mono (the wrong way)

Installing Mono seems to be (almost) as simple as running the following command:

sudo apt-get mono-complete

If you do that, check the version number by executing this command

mono --version

However… this will get you version 3.2.8, which is definitely not the latest.  If you use this, you will get a partially working Mono that will work for very simple programs and crash when you do something really complex like try to put a textbox on a screen.

Installing Mono (the right way)

Installing the latest Mono isn’t quite as intuitive as the previous way of doing it.  You need a few configurations first.  The following steps will load the latest build of Mono on your Pi:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mono-complete

From http://www.mono-project.com/docs/getting-started/install/linux/

You can do this automatically:

wget https://raw.githubusercontent.com/lluppes/pisharp/master/3_install_mono
chmod 755 3_install_mono
sh 3_install_mono

When you are done, check the version number with this command, and you should see a 3.12* version:

mono –version

piMonoVersion

Running a C# WinForms Program

Running a Windows Forms application on a Pi (or Console App) is actually very simple.

  • Create and compile a Windows Forms App
  • Use WinSCP to copy the files from your bin folder to the Pi
    • Create a directory on the Pi to hold your files
    • Copy the EXE and any referenced DLL’s
    • You don’t need the .XML or .PDB files or the vshost.* files
  • Switch over to the Pi and double click to run the program
  • Voila – it should just work!

I’ve tested this with a fairly simple forms program that had dialogs, file IO, etc., and had no problems.  That’s about as far as I’ve explored so far.  I’ll update this with more info later as I experiment more with this.

Installing ASP.NET vNext

One of the awesome features of the new version of ASP.NET v5 is that it’s designed to run on many operating systems, including on a Mac and Linux.  However, there are a couple of pieces that you need to install in order to make your new ASP.NET vNext pages work – primarily the KVM and Libuv modules.

Update Your Certificates

In order to get those programs installed properly, you’ll need some updated certificate.  Update the certificates on your Pi with these commands.  You’ll be prompted multiple times to confirm the certificates, and they will warn you that they certs are invalid (don’t believe it!).  Just say “Y” to each certificate and you should have no problems with this.

sudo certmgr -ssl -m https://go.microsoft.com
sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net
sudo certmgr -ssl -m https://nuget.org
sudo certmgr -ssl -m https://www.myget.org/F/aspnetvnext/
mozroots --import --sync

You can do this automatically:

wget https://raw.githubusercontent.com/lluppes/pisharp/master/4_install_certs
chmod 755 4_install_certs
sh 4_install_certs

Install KVM

To install KVM (the kernel Virtual Machine) use these commands:

mkdir ~/sources/
mkdir ~/sources/aspnet5
cd ~/sources/aspnet5
git clone git://github.com/aspnet/home.git
sh ~/sources/aspnet5/home/kvminstall.sh
echo "  Run this command:      source /home/pi/.k/kvm/kvm.sh"
echo "  Then run this command: kvm upgrade"

I’m not sure why, but the last two commands fail when I try to include and run them in this batch file, so I had to run them manually…

You can do this automatically:

wget https://raw.githubusercontent.com/lluppes/pisharp/master/5_install_kvm
chmod 755 5_install_kvm
sh 5_install_kvm

Install Libuv

Libuv is a cross-platform support library which was originally written for NodeJS, designed around the event-driven asynchronous I/O model.  Install it using these commands:

wget http://dist.libuv.org/dist/v1.0.0-rc1/libuv-v1.0.0-rc1.tar.gz
tar -xvf libuv-v1.0.0-rc1.tar.gz
cd libuv-v1.0.0-rc1/
./gyp_uv.py -f make -Duv_library=shared_library
make -C out
sudo cp out/Debug/lib.target/libuv.so /usr/lib/libuv.so.1.0.0-rc1
sudo ln -s libuv.so.1.0.0-rc1 /usr/lib/libuv.so.1

You can do this automatically:

wget https://raw.githubusercontent.com/lluppes/pisharp/master/6_install_libuv
chmod 755 6_install_libuv
sh 6_install_libuv

Running Your First ASP.NET MVC6 Page

After installing and configuring the app, run these commands:

cd /home/pi/sources/aspnet5/home/samples/HelloMvc
unset RUNLEVEL
kpm restore
k kestrel

The unset RUNLEVEL command is there because I keep getting the error “System.ArgumentException: An element with the same key already exists in the dictionary”.  If you run the command “printenv” you’ll see that you have two rows that say runlevel=.  The command “unset RUNLEVEL” will remove the second one, then you can run the k kestrel command and it should work. There must be a way to get rid of this, but I haven’t found it yet!

If everything worked and was installed properly, you should see the word “Started” in your command window.  Open a browser and navigate to http://localhost:5004/ and you should see the default welcome screen.

piStartLibuv

To replace the welcome screen with the more typical index page, you have to add a route in the startup.cs.  Edit the HelloMVC/startup.cs and comment out the UseMvc() line and add a new route:

//app.UseMvc();
app.UseMvc(routes =>
{
    routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");
});

If you want some customized content, edit the HelloMVC HomeController.cs to have User.Name equal to your name.

User user = new User() {
    Name = "Lyle",
    Address = My address"
};

Go back to your command window and hit Ctl-Z to stop the process.  It’s stopped but actually still running so you will need to type in the command “kill %1” to really kill it.  Once it’s gone, type in “k kestrel” command to restart it and then refresh your browser, and you should end up with something like this:

piStartAspvNext

 

In Conclusion

I hope this walk through helped you out.  I had a hard time finding all the right details for this – there were little bits and pieces everywhere and allusions to some of this, but nothing comprehensive that put it all together.

I’ll be adding more to this in the near future as I get more content about how you can create a fully working ASP.NET vNext / MVC6 application running, and a working sample project you can download from the GitHub repository.

You can download a free eBook with all this info and more at:
https://raw.githubusercontent.com/lluppes/pisharp/master/RaspberryPiNetDeveloper_v1_Beta.pdf

Lyle

Posted by: lluppes | March 19, 2015

.NET on a Raspberry Pi 2???

The Raspberry Pi has been a great hit, selling over 5 million devices since its introduction in 2012.  People have used it in schools to teach children about programming, and hobbyists have been building lots of interesting projects with it. One of the great things about the Pi ecosystem is that everything is very inexpensive.  The latest Raspberry Pi 2 has a 900 MHz quad-core processor for only $35 — wow!  You can buy all of your components and have a fully functioning computer for less than $100.

However, one of the problems (although some people might say that’s an advantage!) is that it’s a Linux computer and uses languages that are not familiar to the millions of experienced .NET developers out there right now.  Sure – we could all learn Python or Scratch or whatever the latest small device language is… but why?

What if we could use the .NET languages we know and love and use most of our installed code base and then deploy that on these little tiny computers?  There are millions of .NET programmers out there with billions of lines of tested code in their project libraries.  I believe you can use that code easily on the Pi, and I’ll show you how you can do it in just a few short steps in this guide.

<TL;DR>    (a.k.a.  Too Long – Didn’t Read!)

These scripts are available on https://github.com/lluppes/pisharp.
A free eBook with all this info and more is available at
https://raw.githubusercontent.com/lluppes/pisharp/master/RaspberryPiNetDeveloper_v1_Beta.pdf

</TL;DR>

Divide and Conquer

I’ll break this down into two blog posts because doing it justice in one makes it two long:

Part 1 – A Beginner’s Guide to setting up your Raspberry Pi (this post)
Part 2 – Installing Mono and ASP.NET vNext on your Raspberry Pi

Time to Buy Some Goodies

You need to see this for yourself and getting started is relatively inexpensive.  Here what I would recommend that you start with for your shopping list:

Raspberry Pi 2 Model B (1 Gig) $ 35.00
http://www.mcmelectronics.com/product/83-16530

32G microSD Card (You could go smaller, but why? To save $5?) $ 13.99
http://www.amazon.com/gp/product/B003WGJYCY/

Mini Wireless Keyboard (It’s really cool!) $ 13.99
http://www.amazon.com/gp/product/B00KF9IVKC/

USB WiFi Adapter (Less wires is better, right?) $ 14.99
http://www.amazon.com/gp/product/B003MTTJOY/

Plastic Case $ 9.49
http://www.amazon.com/gp/product/B00OBBFP0O/

Total $87.46

There are also a couple of things that you will need that you probably already have laying around your office:

  • A USB power supply with a micro USB cable (an old phone charger will probably work just fine – you need a 5V adapter).
  • You will need a spare monitor of some kind that supports HDMI. You don’t really need a dedicated monitor – you only really need it during the setup, so you can share with your computer if needed.  If your monitor only has a DVI connection, you can buy an HDMI to DVI adapter
  • HDMI – DVI Adapter Cable http://www.amazon.com/gp/product/B001TH7T2U/  $7.99

Once you have these components, you’re all set to go.

Installing the Operating System

Once you have that little box of Raspberry in your hot little hands, it won’t do any until you install an operating system – these little computers don’t even have a hard drive.  To get rolling, you will need a formatted microSD Card.  You might think you could just format it in Windows Explorer, but you are better off using a utility that is designed to format SD cards optimally.

You can download a free formatter from
https://www.sdcard.org/downloads/formatter_4/
Install and open the utility, insert and select your microSD card, and begin formatting.

There are several operating versions available at http://www.raspberrypi.org/downloads/.
If you feel like you must be a real geek, go ahead and install one of the many Unix variants.  Be aware though that as of the time of this document, not all of them work on the Raspberry Pi 2, so I’d stick with Raspbian for now.  If you just want to get started quickly, simply download the NOOBS install – it’s already prepared to make this quick and easy.  All you have to do is unzip the downloaded file to your PC, then copy all of the files on to your newly formatted SD card and you are ready to boot up your Pi.

Initial Power Up

Connect all of your new hardware, put microSD card with the extracted NOOBS files into your Pi, and then power it up.  You will see a NOOBS installation menu – choose Raspbian from that menu:

piNoobsInstaller

The installer defaults to the Great Britain locale (because the Pi was created there), so you may want to change the language and keyboard to US instead of GB.  The one issue I found with using the GB keyboard that made me change it is that I could not find a way to enter the “\” character. (Maybe there is a way, but I couldn’t find it!)

Once you click “Install” the Pi will go to work rebuilding your SD card with the operating system.

piInstallingOS

After a few minutes, you’ll be ready to reboot and configure your Raspberry.  The first time it boots up you will automatically be greeted with the Config Tool.

piRaspConfig

You don’t have to set most of these because NOOBS takes care of most of it, but you will want to change these three options:

  • #2 – Change User password – the default User Id is “pi” and password is “raspberry”. Since every noob knows this, if you want any kind of security, you really should change this (you can always do it later — just don’t forget!)
  • #3 – Enable Boot to Desktop – Select “Desktop Login as pi at the graphical desktop”, unless you always want to have to type a command at the command line to start the user interface.
  • #4 – If you changed the language to English on the install screen, you will need to select the Internationalisation Options and install the “en-US.UTF8 UTF8” locale, and then change the default keyboard on the follow up screen. It will then take a minute or two to generate the proper locale files.

Tab down to Finish and press enter and your Pi will reboot.  If you miss Option 3 and end up at the command line instead of the desktop, you can always start the GUI with the command “startx”. If you want to get back to this screen later, just open a command prompt and type “sudo raspi-config”

It’s Alive!

Congratulations – You now have a working Raspberry Pi!  Granted, it doesn’t do much yet, but it’s a start.  You should be seeing the home screen:

piRaspbianStartup

The first thing you will need to do is to get your network connection running.  If you connected an Ethernet cable hard line, it should be already up and working already.  You can open a web browser and browse to any website to verify this.

If you want to use WiFi, you will have to do a bit of configuration to get it up and running.  Open the Menu -> Preferences -> WiFi Config menu item.  On the “wpa_gui” window that pops up, do the following:

  • Select the Manage Networks Tab.
  • Select the Enabled radio button
  • Click Scan button to open Scan Results popup window
  • Select your network and then enter in your wireless key in the PSK textbox on the popup screen

Before you leave this screen, you will want to find your IP Address (you’ll want that later), located on the Current Status tab.  If you want to find it use a command line, use the “ifconfig” tool (a cousin to the Windows ipconfig command).  I usually add a “grep 255.255” command to filter it down to just the line you are interested in. (grep is a Unix search utility), like this:  “ifconfig | grep 255.255”   Once you have an IP address, open your web browser and go to some website to test out your connection.

If you want, you can change your Pi to use a Static IP address, which might make it easier down the line.  I don’t usually bother with this as I haven’t had an issue using DHCP on my home network because it almost always keeps the address, and I can always look it up if I need to.

Remote Desktop

I’ve found that the easiest way to work on the Pi is to do it with your normal desktop and use a remote desktop program to access to your Pi.  The standard Remote Desktop program in Windows won’t work, but there is an easy (and free!) program available called TightVNC.  You will need to install the server on your Pi, and then run a client on your Windows Desktop.

To install TightVNC on your Pi, open a command line window and enter the following commands:

sudo apt-get install tightvncserver autocutsel
tightvncserver

Here is an explanation of what the commands do:

sudo: asks the system for elevated rights
apt-get: is the Advanced Packaging Tool command (kinda like NuGet)
install: is the action for apt-get, which followed by the packages that you want apt-get to install
tightvncserver: is the name of the program you want to run

My favorite explanation of what the sudo command does is from Randall Munroe’s always excellent xkcd comic:

piSudohttp://xkcd.com/149/

When you issue the “tightvncserver” command, and the VNC Server starts for the first time, you will be prompted to supply a password, and then each time you start your VNC client you will be asked for this password.  You can say safely ignore and say No to the view-only password.  Note the message “New ‘X’ desktop is raspberrypi:1”.  The “1” tells you that VNC is listening on port 5901.  If you run this command again, it would start another program and reply with “raspberrypi:2”, which would mean it was running on port 5902.

To install the TightVNC Client on your Windows Desktop, download the program from http://www.tightvnc.com/download.php and load it on your system.  To connect to your Pi, enter a Remote Host of your IP address plus the “:5901” and click Connect, then you will be prompted to enter your VNC password.

You should now have a remote session open from your Pi on your desktop so you can use your normal mouse and keyboard and start the system update patching process.

Enable Copy/Paste in TightVNC

By default, one feature that is not enabled in TightVNC (that I think is sorely needed!) is the ability to copy and paste from your desktop into and out of your Pi.  To enable that, you will have to install one small feature.  If you followed my instructions earlier when you apt-get installed tightvncserver, you added another package named “autocutsel”.  To enable it, you will need to edit the pi\.vnc\xstartup file and add one extra line of configuration.  The “.vnc” directory is a hidden directory, which is indicated by having a period as the first character of the directory name.  Note that this directory actually won’t exist until you run tightvncserver for the first time.  Open the File Manager, and turn on hidden files under the view menu, then Navigate to the .vnc\xstartup and right click and open up with the text editor.  Find the line “xsetroot –solid grey” line and then add a new line after it that contains the “autocutsel –fork” command.

piEditVNCStartup

piVNCCopyPaste

Save the file and you should be all set. Stop and restart TightVNCServer and you should now be able to copy and paste from your desktop to your Pi to your heart’s content.

Initial Setup

As you read through this manual, you will see a lot of commands and files that will set up your Pi.  I’ve included them in this document so that you can see what they do, but you probably don’t want to type them all manually.  To help you out, I’ve published all the scripts out to a GitHub repository: https://github.com/lluppes/pisharp

To use these script files, first fetch the first master file from the repository by entering a wget command in the command line window on your Pi.  At this point you will have a file, but the operating system doesn’t know that it’s a script, so you have to go tell it to give the file execute permissions by running the “chmod” command. Finally, run that command file using the “sh”, which will in turn fetch the other files and automatically mark them as executable.

wget https://raw.githubusercontent.com/lluppes/pisharp/master/getScripts
chmod 755 getScripts
sh getScripts

Here is an explanation of what the commands do:

wget program that retrieves files from an http* source
chmod 755 marks a file as executable
sh starts a command line interpreter to run some commands

Auto-Start TightVNC

At this point, you have the TightVNCServer installed and running, but if you reboot, it won’t start up until you enter the “tightvncserver” command again.  If you want it to start up automatically (and you do!), do the following.  Create a new file in the init.d directory.  This is protected directory, so you have to use a sudo command to start your editor and get elevated privileges.  At this point most tutorials will spell out a “sudo nano…” command for you.  Why?  Because that’s the Unix admin way to do it, with the ubiquitous and obtuse Nano editor.  But we are .NET programmers and we know there are better tools available, so let’s use them!  Leafpad is the alter ego on the Pi of NotePad, so let’s use that. Enter the command:  “sudo leafpad” and then enter this script and save it as “/etc/init.d/vncboot”.

### BEGUN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog sudo etworking
# Required-Stop: $remote_fs $syslog sudo networking
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/Stop TightVNCServer at boot
### END INIT INFO

export USER='pi'
case "$1" in
start)
  echo "Starting VNC Server"
  su $USER -c '/usr/bin/vncserver :1 -geometry 1280x800'
  ;;
stop)
  echo "Stopping VNC Server"
  pkill Xtightvnc
  ;;
*)
  echo "Usage: /etc/init.d/vncboot {start|stop}"
  exit 1
  ;;
esac
exit 0

Tip: You can fetch the contents of the file from GitHub and then simply copy it to the directory using these commands:  (if you ran the getScripts command earlier you already have it, so you can skip the first line)

wget https://raw.githubusercontent.com/lluppes/pisharp/master/1_vncboot
sudo cp /home/pi/1_vncboot /etc/init.d/vncboot

Once you have this file in place, you’ll need to mark it as an executable script with this command:

sudo chmod 755 /etc/init.d/vncboot

You can now start or stop the service manually by running the following commands. Make sure you do this at least once so that you set up the remote access password.

sudo /etc/init.d/vncboot start
sudo /etc/init.d/vncboot stop

I’m not sure why, but it seems to need a reboot here before you do the next update command or it doesn’t work…  so you should reboot your Pi now by executing the command: “sudo reboot”

Just having that file in the directory won’t make it auto-start.  To do that, you will have to enter the command:

sudo update-rc.d vncboot defaults

Reboot your Raspberry Pi, and you should be able to connect across the network using the VNC Viewer and now you won’t need an extra keyboard, mouse, and monitor for your Pi cluttering up your desktop anymore!

Applying System Patches and Updates

Like any new operating system, there are always patches and updates that you need to install when you first install an operating system.

Open a command prompt (LXTerminal) and run these commands:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install htop autoconf automake screen
sudo rpi-update
sudo reboot

You can fetch these commands from GitHub using these commands:

wget https://raw.githubusercontent.com/lluppes/pisharp/master/2_update_os
chmod 755 2_update_os
sh 2_update_os

Tip: If the script stops and asks you to confirm with a “Y/n”, make sure you enter an UPPER case Y, otherwise sometimes the script just stops.

Here is an explanation of what the commands do:

sudo: asks the system for elevated rights
apt-get: is the Advanced Packaging Tool command
update: will download software package lists
dist-upgrade: updates the software packages (this different than just using “upgrade” as it retrieves all the dependencies also)
rpi-update: will update the Raspberry firmware
install: will install a new program
htop autoconf automake screen: are useful utilities

Once everything is updated, reboot with a “sudo reboot” command.

Ready To Move On?

Your Pi should be all set to go and you’re all ready to starting doing something cool with it!

Part 2 of this series will detail how to properly install Mono on your Pi, and then get some .NET programs running, and how to configure and run ASP.NET vNext.

Posted by: lluppes | March 17, 2015

Surface Pro 3 Tips

SurfacePro3I don’t know about you, but I love my Surface Pro 3.  In fact, I like it so much, that I have one in my home office that I bought for my personal consulting business, and I got another one to use at my daytime job, so I actually have two of them now!

Having worked with the Surface for a few months now, I have a couple of tips that I would like to share, in the hopes that they will help someone else.

Can’t get to Sleep?

If you’re a developer like me, and you have a Surface Pro 3, you may have installed Visual Studio.  I recently installed some new portions VS2013 and VS2015 (specifically the Windows Phone developer tools), and I starting having issues with sleep mode on the Surface. The Surface supports a “Connected Standby” power mode, which makes it very quick and easy to close the lid of your Surface, then open it and wake it back up again almost instantly.

SurfacePowerProblem
However, as it turns out, that mode is incompatible with the Hyper-V program, which is installed and required to run the Windows Phone Emulator. Once you install those Windows Phone tools, your “Connected Standby” mode is gone. In fact, if you go to the Power Options screen, you will find that you can’t even set your power button to Standby — because it’s not even there anymore!

Fortunately, there is a solution — there is a simple command that you can enter at the command line
(Note: you must start the command prompt in Administrator Mode for this to work).

To turn this “feature” off:
bcdedit /set hypervisorlaunchtype off

If you want to run your WinPhone emulator, re-enable this “feature” with this command:
bcdedit /set hypervisorlaunchtype auto

Once you do that, the wonderful “Connected Standby” and Sleep settings are back!

SurfacePowerReset

My DVD Doesn’t Work!

The Surface Pro does not have a built-in DVD player, and I don’t often use one, but occasionally I do need to read or write to a DVD, so I have a great little external DVD that I bought on Amazon for about $32.  However, the first time I plugged it into the USB port on my Surface, it didn’t work, and no amount of persuasion would fix that.  As it turns out, the answer was pretty simple.  The USB port on the side of the Surface doesn’t supply enough power to run the DVD – all I had to do was to plug the DVD into the port on the docking station and magically everything worked!

Print Screen

If you haven’t noticed, there is NO Print Screen button on the Surface keyboard.  This one is pretty simple – press the Fn + Win + Spacebar and you’ll get a Print Screen in the clipboard.

External Touch Screen = Blue Screen of Death

I still haven’t figured out the answer to this one yet…  I bought a nice refurbed Acer 23″ TouchScreen Monitor from NewEgg for about $215, and it works great – sort of…   It does work really well, except for the fact that when I had the USB plugged in to my docking station and the touch features enabled, I would get random Blue Screen of Death crashes without any warning.  I was getting them about once a day before I unplugged the USB cable.  Once I unplugged it, the BSOD’s went away.  I did look and I had the latest and greatest drivers.  I’m not sure what else to try here – I really haven’t taken the time to try and figure this one out.  Once it stopped crashing, I just stopped caring (it’s still a nice monitor!)

I hope these tips help you!

Lyle

Posted by: lluppes | February 16, 2015

Deploy Multiple Projects into One Azure Website

If you have ever wondered how you could create multiple web projects in Visual Studio and then deploy those projects to a single Microsoft Azure Website, this post can show you how. Having multiple projects is a good way to separate your project into small manageable tasks that can be deployed and managed independently. Having to only pay for and manage only one website is even better!

​​​​Microsoft Az​ure Setup

Create and deploy your Azure Website like any other Azure Website. Once the site is deployed, there is one small configuration change you have to make. Select the Website in the Azure management console, then navigate to the Configure section.

Scroll all the way to the bottom of the section and enter the name of the virtual application and the path that it should use. By default, the “/” is the root directory and points to the “site\wwwroot” directory. Add in the custom directory that you want created, appending the name of the application after both of those values, like this example where I’ve added the “Globalization” and “Mobile” virtual applications:

VirtualDirectories

Visual Studio Project Setup​​

Create a standard website, then set up the publish to Azure with the standard Azure Website deployment setup, with one minor exception. Manually change the deployment path in the Connection section to have the application name in the path in the Site Name and Destination URL.

Publish the application normally now, and it should get deployed as a virtual directory inside of your Azure Website.

Warnings!​​​

  • When the application in the root of the Azure Website is deployed, make sure that the “Delete All Files” is NOT checked, or it may remove your child application directories.
  • There may be​ issues with the web.config file when deploying child applications. For example, if you had the following in your section in both the root application and the child application:
    <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" />

    This line would cause the application to fail when run as it inherited the values from the root application and then tried to add this module again.

I hope this helps you out!

Lyle

Posted by: lluppes | January 12, 2015

MVC 5 Website works locally but fails on Server with 403.14

I ran into this problem recently and it took a while to figure out.  My website worked perfectly locally, but when it was deployed to a server, it came up with a blank screen and an error code of 403.14 (Forbidden).

As it turns out, I was using the API Help module (which, by the way, is a totally awesome tool — if you are creating APIs you need to check it out!!)  That tool is looking for an XML documentation file that is created upon build.  If you don’t include that file in your publish process, you’ll get this relatively nasty error, and have pretty much no clue why.  Simply include this file in your deployment and the error should go away.

Hope this helps!

Lyle

Posted by: lluppes | December 5, 2014

The Internet of Convoluted Things

BrokenLightBulb

I saw this blog entry today and it really hit a note with me.

We are advancing towards a world of home automation and smart devices, and for all of us technical geeks – that’s great!  However, it’s just not workable for normal people.

Think about the new enabled light bulbs…  to turn on the light bulb you have to  1) find your phone  2) unlock your phone  3) start the light bulb app  4) tap the bulb to turn it on.  I might find it really cool that I could do that from my phone or tablet.

Most normal people (like my wife) would look at you and say – why wouldn’t I just flip the switch on the wall…?  isn’t that easier?  so…  now you’ve succeeded in making the light bulb more difficult to use?

As we embark on the journey towards smart connected devices, we need to think hard about these things and figure out how to design the devices and the surrounding ecosystems so that things are easier to use and provide value – not just create IOT enabled things because we can.

Lyle

Posted by: lluppes | December 8, 2013

MVC5 Authentication Roles Failure

I’ve been doing a lot of work lately with ASP.NET MVC5, and with most of my development being in a corporate environment, we almost always need authentication in our projects.  MVC4 introduced a new authentication model and MVC5 made major changes to the authentication model once again.

In a recent project, I was vexed with a very strange error that took me hours to resolve.  On my development machine, I have SQL Server installed, but do NOT have SQL Express installed or running.   Some of my other MVC5 projects were working just fine with Authentication and Roles.  In this particular project, the authentication was working just fine, and was creating users in the database as they authenticated.  However, as soon as you tried to check a role using either the explicit Roles.IsUserInRole method or through a standard MVC decoration like [Authorize(Roles = Constants.Role.AdminRole)], the page would sit and spin several minutes, then time out with this error.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
SQLExpress database file auto-creation error:   [stack trace – blah, blah, blah]
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.33440
Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Apparently the Role Manager was attempting to create a SQL Express database in order to validate the roles, and it was unable to do so.  During my searching and experimenting, I found many red herring suggestions which did not help at all.  Since this project was using MVC5, the SimpleIdentity provider was NOT being used, as MVC5 uses the new AspNet.Identity libraries.  So most of the suggestions on this topic offered up things about SimpleIdentity, WebMatrix, adding a <RoleManager> or “enableSimpleMembership” tag in the web.config, update InitializeSimpleMembershipAttribute, etc. – and none of these worked.

Oddly enough, what did work did not seem at all intuitive to me:  removing the RoleManager in the web.config modules section.

<system.webServer>
  <modules>
    <remove name="RoleManager" />
  </modules>
</system.webServer>

This didn’t seem at all obvious to me since I had not actually added it, and I was not running in the context of a server which had a root web.config file which added it.  I still don’t know  how or why it was trying to load the older RoleManager.  In any case, adding this line allowed the MVC5 Role Manager to kick in and then everything worked fabulously.  As I’ve said – I’ve had other MVC5 projects which used Authentication and Roles and had no problems, but there was something different about this project which caused this failure.

I hope this helps someone else as this strange error cost me hours of down time.

Older Posts »

Categories