diff --git a/eth/backend.go b/eth/backend.go
index 783f33908876b05bd70917f82a98bf34b6dfaa6e..fa834911637b50e1aac1d0bc800711bd6b9303d6 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -343,6 +343,7 @@ func (s *Ethereum) Etherbase() (eb common.Address, err error) {
 
 func (s *Ethereum) StopMining()         { s.miner.Stop() }
 func (s *Ethereum) IsMining() bool      { return s.miner.Mining() }
+func (s *Ethereum) HashRate() int64     { return s.miner.HashRate() }
 func (s *Ethereum) Miner() *miner.Miner { return s.miner }
 
 // func (s *Ethereum) Logger() logger.LogSystem             { return s.logger }
diff --git a/rpc/api.go b/rpc/api.go
index 5930a4c7b3783c2e84e9610d92c91fb5b08b9b62..9fbe2c56507fa43ecac4961fd29cd4b15301cade 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -465,6 +465,8 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
 			return err
 		}
 		*reply = api.xeth().Whisper().Messages(args.Id)
+	case "ext_hashrate":
+		*reply = newHexNum(api.xeth().HashRate())
 
 	// case "eth_register":
 	// 	// Placeholder for actual type
diff --git a/xeth/xeth.go b/xeth/xeth.go
index 693acb9107fdea997c1bb8a5ac34a2ccae66400d..71c39fd42954a61bc16aedacca0fb9a4685b4b87 100644
--- a/xeth/xeth.go
+++ b/xeth/xeth.go
@@ -280,6 +280,10 @@ func (self *XEth) IsMining() bool {
 	return self.backend.IsMining()
 }
 
+func (self *XEth) HashRate() int64 {
+	return self.backend.HashRate()
+}
+
 func (self *XEth) EthVersion() string {
 	return fmt.Sprintf("%d", self.backend.EthVersion())
 }