Hack a ~$300 Dual Core Haswell mini-PC with dual Intel Ethernet
-
Hey all,
Thought I'd start talking about a little project I'm working on.
I've been using a little Asus Chromebox hacked to run Linux as a HTPC with Kodi for a while now, but I really want to start using discrete NVIDIA graphics instead for the prowess of their VDPAU implementation.
This leaves me with a perfect little low power machine, and nothing to do with it.
I also happen to have a Mini-ITX Haswell Core i5-4750T in a total overkill pfSense box. The lightbulb struck a few days ago. What if I could switch them?
The Core i5 with it's x16 slot would be great with a 720GT as a HTPC with Nvidia graphics, and the Asus Chromebox with its 2GB of RAM, 16GB SSD and a Haswell Celeron 2955U (Dual core 1.4Ghz) is more than capable of keeping up with home router loads at my 150/150 Mbit. speeds.
The biggest problem is that the Chromebox doesn't have very good Ethernet (just a single Realtek port, and Atheros Wifi) Firstly I never use Realtek Ethernet for anything other than low priority client applications. Secondly, with just one Ethernet port, I'm not going to be doing much in the way of routing.
That's when I came across the NISK300LAN Mini-PCIe dual Intel 210-IT Ethernet adapter.
I could just pull the Atheros WLAN card, insert this dual Intel mini-PCIe card and be off to the races!
There are a few issues though:
1.) Many of these mini-PCIe slots are WLAN only. I have no guarantee this will actually work, and the port in this mini-computer is able to detect and use the Ethernet ports when connected, and is able to provide enough power. (Tech specs I can find suggest that i210 chips use 0.81W each, but I have no idea how much power the Atheros WLAN card I am removing used.)
2.) There isn't much space to fit the extra ports. At first my plan was sawing a hole for it in the side of the Chrome Box, and just tightening the bracket over the hole, but after some checking of dimensions I don't think it will fit. (see the insides oft he Asus Chromebox here)
As far as the space issues go, I figure I can just take the bottom lid off the case, and design my own box for the bottom, 3D print it, and then install the dual LAN adapter back into it, and tighten it back on. Piece of cake.
The "will it actually work, be stable and be detected" issue is my only concern here. I've got my fingers crossed. If it works this could be a great low power, cheap and very capable pfSense router.
In its current duty the Chromebox uses about 5-6W at idle, as measured at the wall with my trusty Kill-A-Watt. I've never seen it go above 12W, but I only really use it for video playback.
If you shop around you can find one of these Asus Chromeboxes for ~$150 (or less if you are willing to take a chance on a used one) which is a fantastically low amount of money considering the hardware it comes with. They are very easy to hack into running other OS:es. The dual i210 mini-pcie NIC cost me $159, so a full fledged Haswell based low power pfSense router for a total of $309 is pretty damned good if you ask me. You are unlikely to match it unless you use existing and old parts, in which case you are going to use much more power.
I'm looking forward to this project. When my mini-PCIe dual NIC arrives I'll do a brief test to make sure it is detected, and then go about taking detailed measurements for my CAD model for 3D printing. I'll keep you guys posted.
I know it is a big risk that the NIC won't work in the Chromebox, but it is one I am willing to take for the awesome potential if it works, and the ability to spread the joy in confirming compatibility so others can do the same. If you google around, lots of people are looking to find a NUC with dual Intel NIC ports for something like this. If this works we've just found one. (it will just take a little hacking)
-
Hey, that's a really nice find. Most WLAN cards sit somewhere between 5-10W in consumption, depending on how many antennas they drive (more = more) That being the case the 210T chips should be easy to drive - however, I'd be more worried about the bandwidth, mini-pcie is only x1 pci-e from memory.
-
Building a PC Engines apu2c4 box would run around the same as either the Chromebox or dual i210 mini-pcie NIC costs.
Just saying ;)
-
@lra:
Building a PC Engines apu2c4 box would run around the same as either the Chromebox or dual i210 mini-pcie NIC costs.
Just saying ;)
That's a cool board I hadn't seen before.
It might do a good job, but I have to say, I'd pick a low end Haswell core over a an AMD Jaguar any day :p
-
Hey, that's a really nice find. Most WLAN cards sit somewhere between 5-10W in consumption, depending on how many antennas they drive (more = more) That being the case the 210T chips should be easy to drive - however, I'd be more worried about the bandwidth, mini-pcie is only x1 pci-e from memory.
Yeah, I thought of that.
From doing an lspci -vvv in linux - however - it appears as if the slot it is in supports PCIe Gen2, and so do the i210 chips. If that is the case it should be able to get sufficient bandwidth to support two gigabit ethernet interfaces, even with just one PCIe lane.
Technically even a single lane of Gen1 PCIe should have enough bandwidth, but Ethernet apparently has some overhead. I have read that those who have tried have gotten about 1.4Gbit/s of Ethernet bandwidth out of a single lane of Gen1 PCIe. That means it ought to be enough for ~700Mbit/s full duplex routing, way more than I need since my connection is 150/150Mbit. It would be nice - however - to have it be future proof up to a gigabit. If it successfully connects at Gen2 speeds it should be. Time will tell.
Apparently the dual i210 mini-pcie adapter is taking the slow boat over from Taiwan, so I won't know for a little bit, but when I do, I'll be sure to post here.
Here is the lspci -vvv I was talking about for reference:
$ sudo lspci -vvvs 02:00 [sudo] password for htpc: 02:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01) Subsystem: AzureWave Device 2110 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <tabort- <mabort-="">SERR- <perr- intx-<br=""> Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 19 Region 0: Memory at e0600000 (64-bit, non-prefetchable) [size] Expansion ROM at e0680000 [disabled] [size] Capabilities: [40] Power Management version 3 Flags: PMEClk- DSI- D1+ D2- AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] MSI: Enable- Count=1/4 Maskable+ 64bit+ Address: 0000000000000000 Data: 0000 Masking: 00000000 Pending: 00000000 Capabilities: [70] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 <64us ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF Not Supported DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Capabilities: [140 v1] Virtual Channel Caps: LPEVC=0 RefClk=100ns PATEntryBits=1 Arb: Fixed- WRR32- WRR64- WRR128- Ctrl: ArbSelect=Fixed Status: InProgress- VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans- Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256- Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff Status: NegoPending- InProgress- Capabilities: [160 v1] Device Serial Number 00-00-00-00-00-00-00-00 Kernel driver in use: ath9k As you can see the Atheros adapter is only connected at Gen1 speeds (2.5GT/s) but it clearly says there is support for PCIe v2, which I am taking to mean Gen2.[/size][/size]</perr-></tabort->
-
I saw something silimar here (http://blog.fosketts.net/2015/06/05/adding-a-second-ethernet-port-to-an-intel-nuc-via-mini-pcie/)
quite interesting though. -
I saw something silimar here (http://blog.fosketts.net/2015/06/05/adding-a-second-ethernet-port-to-an-intel-nuc-via-mini-pcie/)
quite interesting though.Yeah, I saw this too when I was doing my research.
The problem with this one is twofold.
The chromeboxes all use Realtek Ethernet, which I am trying to get away from, as they stink for intensive applications. I'd only use Realtek Ethernet for unimportant client loads. They really are junk.
Because of this, it's not enough for me to just add one port. I need to add two.
That, and the addon board he used in that article is also Realtek.
It wasn't until I found the dual Intel adapter I was happy with this approach. Only downside is that no one seems to carry it in inventory here. It has to be special ordered via b2b type distributors from Taiwan.
-
-
@BlueKobold:
@lra:
Building a PC Engines apu2c4 box would run around the same as either the Chromebox or dual i210 mini-pcie NIC costs.
Just saying ;)
APU2C4 board & this case would also march.
Yeah, I am still very wary of AMD's low power chips. The IPC is quite horrendous to begin with, and then they lower the clock speed down to only 1ghz.
Maybe I'm silly, but I just don't trust anything that's not a fully fledged Intel desktop class core today. I won't even go Atom, and certainly not Jaguar/Puma.
I have an old Zacate based E350 Micro-ATX board kicking around, which wasn't bad for the time, and used out of order execution and really kicked some Atom butt back in the day, but times have changed and not been too kind to AMD unfortunately. (Maybe they can come back with the Zen launch later this year, who knows) I wouldn't use it as my router though.
I'll take a Haswell/Skylake desktop class chip, slowed down to fit a lower power envelope before I go with anything Atom/Jaguar/Puma/etc.
-
@BlueKobold:
@lra:
Building a PC Engines apu2c4 box would run around the same as either the Chromebox or dual i210 mini-pcie NIC costs.
Just saying ;)
APU2C4 board & this case would also march.
Yeah, I am still very wary of AMD's low power chips. The IPC is quite horrendous to begin with, and then they lower the clock speed down to only 1ghz.
Maybe I'm silly, but I just don't trust anything that's not a fully fledged Intel desktop class core today. I won't even go Atom, and certainly not Jaguar/Puma.
I have an old Zacate based E350 Micro-ATX board kicking around, which wasn't bad for the time, and used out of order execution and really kicked some Atom butt back in the day, but times have changed and not been too kind to AMD unfortunately. (Maybe they can come back with the Zen launch later this year, who knows) I wouldn't use it as my router though.
I'll take a Haswell/Skylake desktop class chip, slowed down to fit a lower power envelope before I go with anything Atom/Jaguar/Puma/etc.
Depends on your applications, normal filtering/routing with a few add-on package, latest ATOM processors will do the job nicely. Just like the Avoton C2750/Rangeley C2758, in desktop benchmark they can out perform i3 processors when using all 8-core, nowadays it's a bit rare that firewall applications won't run in multithreaded way so you don't need to worry about it's performance, and I don't see the point that why we have to spend more money on faster platform but to keep it slowed down just for reducing power, that's not the intended behaviour.
Yes I agree that those embedded platforms are expensive compared with general PC, but most of them are industrial grade with long life support (like my Jetway NF9HG-2930, the support will not end before 2019) and designed to run as network appliance. To do an apple-to-apple comparison it's better to fit the whole full fledged processor on server/industrial grade motherboard etc….then you'll find that the cost is still much higher compared with embedded platform.
-
Well, it looks like my order for the NIC in this thread may have fallen through. Sales guy is no longer getting back to me. It's probably because they are primarily a business to business distributor, and it isn't worth their time selling to consumers like myself.
I'll have to go back to the drawing board and figure out something else.
I'm still wary of that low power embedded AMD board, but it IS priced rather well…
-
Any more updates on your attempts here? I was just thinking the same thing for my unused Asus Chromebox…
-
This may be more easily available.
http://www.jetwayipc.com/content/?ADMPEIDLA_220.htmlI used one in a couple of small build and so long as there's some airflow it won't overheat or lock-up